Unit-тесты в Drupal 11: настройка PHPUnit и примеры запуска

Если вы только начинаете писать тесты в Drupal, то официальная документация — первое место, куда стоит заглянуть. Однако она не всегда отвечает на все вопросы новичков. В этой статье разберём несколько моментов, которые часто вызывают недоумение.

PHPUnit по умолчанию не установлен

В Drupal 11 пакет phpunit/phpunit не входит в зависимости по умолчанию. Чтобы проверить, установлен ли он:

Если не установлен — добавьте вручную (Drupal 11 поддерживает PHPUnit 10):

Настройка конфигурации phpunit.xml

В документации подробно описано, как создать файл конфигурации для PHPUnit. Обычно рекомендуют скопировать шаблон:

Но есть нюанс: нехорошая практика — хранить кастомные конфиги внутри www/core. Лучше скопировать файл в корень проекта (где находится composer.json) и скорректировать пути вручную.

Главное — правильно указать путь до core/tests/bootstrap.php и параметры подключения к базе данных.

Указание нужных модулей при тестировании

Если вы тестируете код из конкретного модуля (например, modules/custom/ai), важно, чтобы необходимые модули были активны во время выполнения теста. Это задаётся в свойстве $modules внутри тестового класса.

Если не указать ai, а Trait лежит в этом модуле — код не подгрузится, и тесты не запустятся.

Как запускать тесты

Может показаться, что тесты можно запускать через drush, но это не так. Используется исполняемый файл PHPUnit:

Т.к. запуск phpunit можно сделать из любой папки, а файл phpunit.xml лежит, например, в корне проекта, то укажите путь к конфигурации (в примере запуск из DOCUMENT_ROOT):

Запуск тестов через Composer-скрипты

Мне нравится подход, когда тесты запускаются через скрипты в composer.json. Это избавляет от необходимости каждый раз писать длинные команды и помнить путь до phpunit.xml.

Обычно я кладу файл phpunit.xml в корень проекта — туда, где composer.json, — чтобы не указывать параметр -c. Вот пример секции scripts, которую я использую:

Теперь, чтобы запустить все тесты или только группу ai, достаточно:

Это удобно, особенно если нужно запускать тесты часто, с разными параметрами. Плюс можно легко делиться командами с коллегами — всё уже настроено и готово.

Написать комментарий

 

Комментарии к «Unit-тесты в Drupal 11: настройка PHPUnit и примеры запуска»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: