I had problems with configuring PhpStorm IDE to use http://symfony.com/doc/current/components/phpunit_bridge.html while working with Symfony 3.3.
I decided to just download
bin and use it instead.
Symfony 3.4 (and Symfony 4), does not even have
phpunit.xml.dist out of the box, so there is a problem with using
I’ve installed PHPUnit using flex:
composer req phpunit
That created phpunit.xml.dist and I was able to run tests from command line by:
But again I could not make PhpStorm use it.
So I downloaded
phpunit.phar and it can work together with provided phpunit.xml.dist.
Question 1: Is there any way for PhpStorm IDE to use phpunit-bridge?
Question 2: What is the best practice for Symfony 4 (phpunit-bridge or vanilla phpunit.phar)?
The location of the “phar” file is:
or in some cases:
After this, the specified
phpunit executable will be called correctly when exeuting unit-tests, but with a
--no-configuration option. This can cause autoloading problems (a lot of “class not found” errors), because the autoloader generated by Composer is not specified anywhere.
To fix this, you should have a
phpunit.xml file in your project (this is common practice anyway), in which you specify Composer’s autoloader, something like this:
phpunit.xml should then be specified in the “Default configuration file” option and you should be good to go.
Regarding phpstorm using phpunit-bridge:
It’s possible as a custom script, but you won’t have the nice interface and the possibility to run (and debug) specific tests via PHPStorm interface.
I manage to run symfony/phpunit-bridge with success using this configuration:
- PhpStorm 2018.2.5
- Symfony 4.1.x
- PHP 7.1 running on docker
- “symfony/test-pack”: “^1.0”
composer require --dev symfony/test-pack i have in dir
simple-phpunit which should run
symfony/phpunit-bridge just fine.
Then in PhpStorm in
File | Settings | Languages & Frameworks | PHP | Test Frameworks set:
- radio select to
Path to phpunit.pharoption
Path to phpunit.pharto absolute path of
Default configuration file:and set input value to absolute localization of your
phpunit.xml.dist(in my case
phpunit.xml.dist file should be configured to use
symfony/phpunit-bridge – check https://symfony.com/doc/current/components/phpunit_bridge.html
Click Appply/Ok and now you can run tests from PhpStorm interface
Aside given answer, it’s worth mentioning that the secret
.phpunit directory won’t appear out of thin air.
composer req phpunit, one has to run the
phpunit script first, eg.:
which will download a local copy of the PHPUnit and place it in the same folder, so the path to the phar executable will be:
// path may differ, at the time being is: bin/.phpunit/phpunit-6.5-0/phpunit
It is very simple and doesn’t matter version of Symfony, because of the concept of testing still stable. At first, you need to configure test framework on the PHPstorm preferences (screenshot), in your case, you can to use Vendored PHPUnit or downloaded manually, you can join in the
PHPUnit library section. Then you need to add
"symfony/phpunit-bridge" as I see was installed, this is all.