Ответ
Модульное тестирование (unit testing) — это практика написания автоматических тестов для проверки корректности работы минимальных изолированных единиц кода, таких как отдельные функции, методы или небольшие классы. Цель — убедиться, что каждый компонент работает согласно своей спецификации.
Основные принципы, которые я соблюдаю:
- Изоляция: Тест должен проверять только одну конкретную функциональность. Внешние зависимости (базы данных, API, файловая система) заменяются заглушками (моками).
- Скорость: Юнит-тесты должны выполняться быстро, чтобы их можно было запускать часто.
- Детерминированность: Результат теста должен быть одинаковым при каждом запуске.
Пример модульного теста на PHP с использованием PHPUnit:
// Тестируемый класс
class Calculator {
public function add(int $a, int $b): int {
return $a + $b;
}
}
// Тестовый класс
class CalculatorTest extends PHPUnitFrameworkTestCase {
public function testAddReturnsCorrectSum(): void {
$calculator = new Calculator();
$result = $calculator->add(2, 3);
$this->assertEquals(5, $result);
}
public function testAddWithNegativeNumbers(): void {
$calculator = new Calculator();
$result = $calculator->add(-5, 10);
$this->assertEquals(5, $result);
}
}
В моих проектах модульные тесты — это основа безопасности рефакторинга и раннего обнаружения регрессий. Я использую фреймворки PHPUnit или Pest.