Практическое руководство по использованию PHPUnit для тестирования PHP-кода новичками

Начните с установки Composer, если он ещё не установлен. Это стандартный менеджер зависимостей в PHP, и без него никуда. В корне проекта выполните composer require —dev phpunit/phpunit – так вы добавите нужный пакет в секцию разработчика. Убедитесь, что в вашем проекте есть файл composer.json. Если его нет – инициализируйте: composer init.

Создайте директорию tests в корне проекта. Именно туда будут помещаться все проверки. Названия файлов должны заканчиваться на Test.php, иначе система их просто не увидит. Пример: UserServiceTest.php.

Пропишите автозагрузку классов и тестов. В файле composer.json добавьте секции autoload и autoload-dev, указав, где находятся исходники и проверки. После изменений обязательно выполните composer dump-autoload.

Создание первого теста – дело двух минут. Подключите пространство имён, унаследуйтесь от PHPUnit\Framework\TestCase и опишите публичный метод, имя которого начинается с test. Внутри – логика проверки: сравнение значений, проверка исключений, работа с моками.

Запуск – через команду vendor/bin/phpunit. Можно указать конкретный файл или директорию. Добавьте конфигурационный файл phpunit.xml, чтобы избежать повторяющегося ввода аргументов. Там же удобно прописывать базовую структуру проекта и нужные параметры запуска.

Установка и настройка PHPUnit в вашем проекте

composer require --dev phpunit/phpunit

Пакет добавится в секцию require-dev файла composer.json, что исключит его из production-сборки. После установки бинарный файл будет доступен по пути vendor/bin/phpunit.

Создай конфигурационный файл phpunit.xml в корне проекта. Простой шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
colors="true"
stopOnFailure="false">
<testsuites>
<testsuite name="Тесты проекта">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>

Убедись, что автозагрузчик подключается через vendor/autoload.php, а сами тесты лежат в папке tests. Если структура иная – укажи нужный путь вручную.

Для запуска просто набери:

./vendor/bin/phpunit

Если файл phpunit.xml существует, настройки подхватятся автоматически. Без него придётся указывать директорию и другие параметры вручную.

Написание и выполнение первых тестов с PHPUnit

Создай отдельный каталог, например tests, и положи туда первый файл с тестами – например, CalculatorTest.php. Название класса должно заканчиваться на Test, а сам файл – соответствовать PSR-4, чтобы автозагрузка не подвела.

Простой пример

Допустим, есть класс Calculator с методом add. Тест выглядит так:

<?php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAddition()
{
$calc = new Calculator();
$result = $calc->add(2, 3);
$this->assertEquals(5, $result);
}
}

Все методы проверки должны начинаться с test, иначе фреймворк их проигнорирует. Также можно применять аннотацию @test, но явное именование предпочтительнее.

Запуск

В корне проекта запусти команду:

vendor/bin/phpunit tests

Если тестов немного, можно указать конкретный файл:

vendor/bin/phpunit tests/CalculatorTest.php