Как настроить PhpStorm для использования Symfony/phpunit-bridge
У меня возникли проблемы с настройкой IDE PhpStorm для использования 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)?
Ответы
Ответ 1
То, что я обычно делаю, это указать мою инфраструктуру тестирования phpunit на PHPStorm в секретный каталог .phpunit
который был создан мостом, например:
Расположение файла "phar":
bin/.phpunit/phpunit-(major).(minor)/phpunit
или в некоторых случаях:
vendor/bin/.phpunit/phpunit-(major).(minor)/phpunit
После этого указанный исполняемый файл phpunit
будет вызываться правильно при выполнении модульных тестов, но с опцией --no-configuration
. Это может вызвать проблемы с автозагрузкой (много ошибок "не найден"), поскольку автозагрузчик, созданный Composer, нигде не указан.
Чтобы исправить это, в вашем проекте должен быть файл phpunit.xml
(это обычная практика), в котором вы указываете автозагрузчик Composer, что-то вроде этого:
<phpunit bootstrap="vendor/autoload.php">
Этот phpunit.xml
должен быть указан в параметре "Файл конфигурации по умолчанию", и вам должно быть хорошо идти.
Что касается phpstorm с использованием phpunit-bridge: это возможно как пользовательский скрипт, но у вас не будет приятного интерфейса и возможности запускать (и отлаживать) конкретные тесты через интерфейс PHPStorm.
Ответ 2
Мне удается запустить symfony/phpunit-bridge с помощью этой конфигурации:
- PhpStorm 2018.2.5
- Symfony 4.1.x
- PHP 7.1 работает на докере
- "symfony/test-pack": "^ 1.0"
шаги:
после того, как composer require --dev symfony/test-pack
я имею в файле dir /vendor/bin
simple-phpunit
который должен simple-phpunit
запускать symfony/phpunit-bridge
.
Затем в PhpStorm в File | Settings | Languages & Frameworks | PHP | Test Frameworks
File | Settings | Languages & Frameworks | PHP | Test Frameworks
File | Settings | Languages & Frameworks | PHP | Test Frameworks
набор 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
Ответ 3
Помимо данного ответа, стоит упомянуть, что секретный каталог .phpunit
не появится из ничего.
После того, как composer req phpunit
, phpunit
сначала запустить скрипт phpunit
, например:
bin/phpunit
который загрузит локальную копию PHPUnit и поместит ее в ту же папку, поэтому путь к исполняемому файлу phar будет:
bin/.phpunit/phpunit-6.5/phpunit
Ответ 4
Это очень просто и не имеет значения для версии Symfony, поскольку концепция тестирования еще стабильна. Сначала вам нужно настроить тестовую среду на предпочтениях PHPstorm (скриншот), в вашем случае вы можете использовать Vendored PHPUnit или загрузить вручную, вы можете присоединиться к разделу PHPUnit library
. Затем вам нужно добавить конфигурацию Run/Debug
. "phpunit/phpunit"
и "symfony/phpunit-bridge"
как я вижу, были установлены, это все.