У меня были проблемы с настройкой PhpStorm IDE для использования http://symfony.com/doc/current/components/phpunit_bridge.html во время работы с Symfony 3.3.
Я решил просто скачать phpunit.phar
в bin
и использовать его вместо этого.
Symfony 3.4 (и Symfony 4), даже не имеет phpunit.xml.dist
из коробки, поэтому есть проблема с использованием phpunit.phar
без труда.
Я установил PHPUnit, используя flex:
composer req phpunit
Это создало phpunit.xml.dist, и я смог запустить тесты из командной строки:
php bin/phpunit
Но опять же я не мог заставить PhpStorm использовать его.
Итак, я скачал phpunit.phar
и он может работать вместе с предоставленным phpunit.xml.dist.
Вопрос 1: Есть ли способ для PhpStorm IDE использовать phpunit-bridge?
Вопрос 2: Какова лучшая практика для Symfony 4 (phpunit-bridge или vanilla phpunit.phar)?
Что я обычно делаю, так это указываю на секретную структуру phpunit на PHPStorm .phpunit
каталог, который был создан мостом, например:
Расположение файла «phar»:
bin/.phpunit/phpunit-(major).(minor)/phpunit
или в некоторых случаях:
vendor/bin/.phpunit/phpunit-(major).(minor)/phpunit
После этого указанный phpunit
Исполняемый файл будет вызываться правильно при выполнении юнит-тестов, но с --no-configuration
вариант. Это может вызвать проблемы с автозагрузкой (много ошибок «class not found»), потому что автозагрузчик, сгенерированный Composer, нигде не указан.
Чтобы это исправить, вы должны иметь phpunit.xml
файл в вашем проекте (в любом случае, это обычная практика), в котором вы указываете автозагрузчик Composer, что-то вроде этого:
<phpunit bootstrap="vendor/autoload.php">
это phpunit.xml
Затем следует указать в параметре «Файл конфигурации по умолчанию», и вы должны быть готовы.
Что касается phpstorm с использованием phpunit-bridge:
Это возможно как пользовательский скрипт, но у вас не будет приятного интерфейса и возможности запускать (и отлаживать) определенные тесты через интерфейс PHPStorm.
Мне удается запустить symfony / phpunit-bridge с помощью этой конфигурации:
после composer require --dev symfony/test-pack
у меня есть в реж /vendor/bin
файл simple-phpunit
который должен бежать symfony/phpunit-bridge
просто хорошо.
Тогда в PhpStorm в File | Settings | Languages & Frameworks | PHP | Test Frameworks
задавать:
Path to phpunit.phar
вариантPath to phpunit.phar
на абсолютный путь simple-phpunit
файл (например, /application/vendor/bin/simple-phpunit
)Default configuration file:
и установите входное значение для абсолютной локализации вашего phpunit.xml.dist
(в моем случае /application/phpunit.xml.dist
) нота: phpunit.xml.dist
файл должен быть настроен на использование symfony/phpunit-bridge
— проверять https://symfony.com/doc/current/components/phpunit_bridge.html
Нажмите Appply / Ok, и теперь вы можете запускать тесты из интерфейса PhpStorm
Помимо данного ответа, стоит упомянуть, что секрет .phpunit
каталог не появится из ничего.
После composer req phpunit
нужно запустить phpunit
сценарий первый, например:
bin/phpunit
который загрузит локальную копию PHPUnit и поместит в ту же папку, поэтому путь к исполняемому файлу phar будет:
bin/.phpunit/phpunit-6.5/phpunit
Это очень простая и не важная версия Symfony, потому что концепция тестирования все еще стабильна. Во-первых, вам нужно настроить тестовый фреймворк в настройках PHPstorm (Скриншот), в вашем случае вы можете использовать Vendored PHPUnit или загрузить вручную, вы можете присоединиться к PHPUnit library
раздел. Тогда вам нужно добавить Run/Debug
конфигурация.
"phpunit/phpunit"
а также "symfony/phpunit-bridge"
как я вижу был установлен, это все.