Урок 18

Автоматическое тестирование

20 мин

Автоматическое тестирование — это написание кода, который проверяет другой код. Это основа качественной разработки.

Зачем нужны тесты?

  • Уверенность: Код работает как ожидается
  • Рефакторинг: Можно менять код, не боясь сломать
  • Документация: Тесты показывают как использовать код
  • Дизайн: Тестируемый код = хороший код

Виды тестов

ТипЧто тестируетСкорость
UnitОтдельные функции/классыБыстро
IntegrationВзаимодействие компонентовСредне
E2EВсю систему целикомМедленно

PHPUnit — стандарт тестирования в PHP

Установка через Composer:

composer require --dev phpunit/phpunit

Структура теста:

// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase
{
    public function testAddition()
    {
        $calc = new Calculator();
        $this->assertEquals(4, $calc->add(2, 2));
    }
    
    public function testDivisionByZero()
    {
        $this->expectException(DivisionByZeroError::class);
        $calc = new Calculator();
        $calc->divide(10, 0);
    }
}

Основные assertions

Написание хороших тестов

Правило AAA:
- Arrange — подготовка данных
- Act — выполнение действия
- Assert — проверка результата

Запуск тестов

# Запуск всех тестов
./vendor/bin/phpunit tests/

# Запуск конкретного теста
./vendor/bin/phpunit tests/CalculatorTest.php

# С покрытием кода
./vendor/bin/phpunit --coverage-html coverage/

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.