Написанное актуально для Drupal 8.6.10-dev
Для других версий Drupal набор и версии зависимостей может меняться. Это связано с тем, что при написании тестов для D8 наследуются классы phpunit. В различных версиях этой библиотеки набор методов и их параметры могут отличаться. В результате при попытке запуска теста будут появляться ошибки, свидетельствующие о несовместимости версии D8 и библиотек, необходимых для запуска тестов.
Устанавливаем зависимости:
- composer install --dev
- composer require --dev phpunit/phpunit 6.5.14
- composer require --dev symfony/phpunit-bridge ^3.4.3
- composer require --dev behat/mink-goutte-driver
- composer require --dev mikey179/vfsStream
Настраиваем phpunit:
Для этого копируем файл core/phpunit.xml.dist в phpunit.xml и настраиваем необходимые параметры. В большинстве случаем можно оставить его как есть.
Далее все действия производятся внутри контейнера php.
Если необходимо, добавляем env-variables(их так же можно прописать в phpunit.xml):
export SIMPLETEST_DB='mysql://db_user:db_pass@mariadb/db_name';
export SIMPLETEST_BASE_URL='http://test-site.loc:8888';
Запускаем тестовый сервер:
drush runserver $SIMPLETEST_BASE_URL &
Запускаем тест:
vendor/bin/phpunit --filter testMethodName path/to/module/tests/src/Functional/TestClassName.php
Команда может зависеть от структуры вашего проекта. Она запускается из папки в которой лежит phpunit.xml и все пути соответственно относительно этой папки.
Чтобы запустить все тесты из TestClassName.php необходимо убрать параметр --filter testMethodName.