Michael Millar
Michael Millar

Reputation: 1604

Why is PhpStorm running tests for only some tests with extra arguments (bootstrap, configuration)?

I am using PhpStorm and for some PHPUnit tests I can right click in the file menu on the left hand side and run some tests and it works.

In the console it shows

/usr/bin/php -dxdebug.coverage_enable=1 /srv/live/vendor/phpunit/phpunit/phpunit --coverage-clover /home/me/.PhpStorm2017.3/system/coverage/live$StringTest.coverage --bootstrap /srv/live/vendor/autoload.php --configuration /srv/live/phpunit.xml tests\src\CoreBundle\Helper\StringTest /srv/live/src/tests/src/CoreBundle/Helper/StringTest.php --teamcity

However, for other tests in another bundle when I right click and run it, the command is

/usr/bin/php /srv/live/src/tests/src/OtherBundle/Classes/Validator/StringLengthTest.php

and the test can't run. I get a class not found error, which I attribute to the command not having the extra arguments as that in the first version above. The other thing I noticed was that the 'Run test with coverage' was only available for the first test, when right clicking in the menu.

Where does this difference originate?

My phpunit.xml file is

<?xml version="1.0"?>
<phpunit cacheTokens="true"
         colors="true"
         stopOnError="false"
         stopOnFailure="false"
         stopOnIncomplete="false"
         stopOnSkipped="false"
         verbose="true"
         bootstrap="/srv/live/vendor/autoload.php">
         <php>
           <server name="KERNEL_DIR" value="app/" />
         </php>
         <testsuites>
             <testsuite name="Project Test Suite">
                <directory>/srv/live/src/tests</directory>
             </testsuite>
         </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="false">
            <directory suffix=".php">/srv/live/src/</directory>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./web/phpunitLog/codeCoverage" charset="UTF-8"
             yui="true" highlight="true"
             lowUpperBound="50" highLowerBound="80"/>
        <log type="testdox-html" target="./web/phpunitLog/testdox.html" />
    </logging>
</phpunit>

In File -> Settings -> Languages & Frameworks -> PHP -> Test Frameworks it is

enter image description here

Do you have any ideas on why I can run one test ok but not the other - I mean why the difference in the arguments (e.g. -dxdebug.coverage_enable=1)?

The php.ini file hasn't changed.

Upvotes: 1

Views: 681

Answers (1)

Michael Millar
Michael Millar

Reputation: 1604

I found a solution (not sure if it's the best).

If I click Run -> Edit Configurations

Then click the plus sign and add a new PHPUnit configuration, I can choose the bundle where the tests were not working.

Now phpunit runs with the extra arguments when I right click in the file menu.

The thing is, I never did this for the test that was working, so although I found a way to get the failing test to work, I am not totally clear on why I saw the difference in the first place.

Thanks HunterFrazier for putting the wheels in motion.

Upvotes: 1

Related Questions