В PhpStorm в саму IDE встроена панель тестирования phpunit тестов. Но зная что в Yii2 сразу из коробки идет Codeception, который включает в себя также и сам phpunit и плюс дополнительный более удобный метод написания тестов, вывод самих unit тестов не совсем удобный. Для запуска codeception тестов нужно создать консольный скрипт и вывод результатов теста будет также через консоль. Хотелось бы иметь возможность прямо из PhpStorm запускать юнит тесты как по одному классу так и только один метод одного класса.
Для решения проблемы запуска unit тестов можно просто переопределить bootstrap файл и просто использовать PHPUnit тест с указанием данного bootstrap файла. Переписывать сами тесты не нужно.
Создадим новый _phpunitbootstrap.php в папки tests/codeception:
<?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'test'); defined('YII_TEST_ENTRY_URL') or define('YII_TEST_ENTRY_URL', '/index-test.php'); defined('YII_TEST_ENTRY_FILE') or define('YII_TEST_ENTRY_FILE', dirname(dirname(__DIR__)) . '/web/index-test.php'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../../config/console.php'); Yii::setAlias('@app', dirname(__DIR__));
Важно правильно прописать пути к autoload и к самому Yii.
Теперь в настройках PhpStorm укажем нужный bootstrap файл (Settings — Languages and Frameworks — PHPUnit):
Создаем новый PHPUnit тест через меню Run/Debug configurations, указываем папку с тестами.
Запускаем и видим удобную панель тестов: