为什么 PhpStorm 运行 只测试一些带有额外参数的测试(bootstrap,配置)?
Why is PhpStorm running tests for only some tests with extra arguments (bootstrap, configuration)?
我正在使用 PhpStorm,对于一些 PHPUnit 测试,我可以右键单击左侧的文件菜单,然后 运行 进行一些测试并且它有效。
在控制台中显示
/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
但是,对于另一个包中的其他测试,当我右键单击并运行它时,命令是
/usr/bin/php /srv/live/src/tests/src/OtherBundle/Classes/Validator/StringLengthTest.php
而测试不能运行。我收到 class not found 错误,我将其归因于命令没有上面第一个版本中的额外参数。我注意到的另一件事是 'Run test with coverage' 仅在第一次测试时可用,当右键单击菜单时。
这种差异从何而来?
我的 phpunit.xml
文件是
<?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>
在File -> Settings -> Languages & Frameworks -> PHP -> Test Frameworks
中是
你有什么想法为什么我可以 运行 一个测试可以但另一个测试不行 - 我的意思是为什么参数不同(例如 -dxdebug.coverage_enable=1
)?
php.ini
文件未更改。
我找到了解决方案(不确定它是否是最好的)。
如果我点击 Run -> Edit Configurations
然后单击加号并添加新的 PHPUnit 配置,我可以选择测试不起作用的包。
现在,当我在文件菜单中右键单击时,phpunit 使用额外的参数运行。
问题是,我从来没有为有效的测试这样做过,所以虽然我找到了一种方法让失败的测试正常工作,但我并不完全清楚为什么我首先看到了差异。
感谢让车轮运转起来。
我正在使用 PhpStorm,对于一些 PHPUnit 测试,我可以右键单击左侧的文件菜单,然后 运行 进行一些测试并且它有效。
在控制台中显示
/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
但是,对于另一个包中的其他测试,当我右键单击并运行它时,命令是
/usr/bin/php /srv/live/src/tests/src/OtherBundle/Classes/Validator/StringLengthTest.php
而测试不能运行。我收到 class not found 错误,我将其归因于命令没有上面第一个版本中的额外参数。我注意到的另一件事是 'Run test with coverage' 仅在第一次测试时可用,当右键单击菜单时。
这种差异从何而来?
我的 phpunit.xml
文件是
<?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>
在File -> Settings -> Languages & Frameworks -> PHP -> Test Frameworks
中是
你有什么想法为什么我可以 运行 一个测试可以但另一个测试不行 - 我的意思是为什么参数不同(例如 -dxdebug.coverage_enable=1
)?
php.ini
文件未更改。
我找到了解决方案(不确定它是否是最好的)。
如果我点击 Run -> Edit Configurations
然后单击加号并添加新的 PHPUnit 配置,我可以选择测试不起作用的包。
现在,当我在文件菜单中右键单击时,phpunit 使用额外的参数运行。
问题是,我从来没有为有效的测试这样做过,所以虽然我找到了一种方法让失败的测试正常工作,但我并不完全清楚为什么我首先看到了差异。
感谢