我不想为所有脚本打开 xdebug 代码覆盖率,但我确实希望能够为生成代码覆盖率的每日 jenkins 构建打开它。
我尝试了以下
phpunit -d xdebug.coverage_enable=1 -c phpunit-coverage.xml.dist
Run Code Online (Sandbox Code Playgroud)
但是我总是收到以下错误
Configuration read from phpunit-coverage.xml.dist
Fatal error: Uncaught exception 'PHP_CodeCoverage_Exception' with message 'You need to set xdebug.coverage_enable=On in your php.ini.' in /usr/local/lib/php/PHP/CodeCoverage/Driver/Xdebug.php on line 72
PHP_CodeCoverage_Exception: You need to set xdebug.coverage_enable=On in your php.ini. in /usr/local/lib/php/PHP/CodeCoverage/Driver/Xdebug.php on line 72
Call Stack:
0.0002 627488 1. {main}() /usr/local/bin/phpunit:0
0.0050 1095880 2. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:46
0.0050 1096608 3. PHPUnit_TextUI_Command->run() /usr/local/lib/php/PHPUnit/TextUI/Command.php:130
0.6419 39830848 4. PHPUnit_TextUI_TestRunner->doRun() /usr/local/lib/php/PHPUnit/TextUI/Command.php:192
0.9760 40345400 5. PHP_CodeCoverage->__construct() /usr/local/lib/php/PHPUnit/TextUI/TestRunner.php:258
0.9764 40358504 6. PHP_CodeCoverage_Driver_Xdebug->__construct() /usr/local/lib/php/PHP/CodeCoverage.php:119
Run Code Online (Sandbox Code Playgroud)
关于如何使其工作而无需每次更改 php.ini 的任何想法?
Jor*_*orj 18
是的,可以,但是您必须首先将命令行 .ini 参数传递给 php:
php -d xdebug.mode=coverage bin/phpunit --coverage-clover='reports/coverage/coverage.xml' --coverage-html='reports/coverage'
Run Code Online (Sandbox Code Playgroud)
注意:“..Xdebug:[Config]设置'xdebug.coverage_enable'已被重命名,..”
小智 10
使用 php 7.4 和 phpunit 9,可以使用 env 设置选项
XDEBUG_MODE=coverage /usr/bin/phpunit
Run Code Online (Sandbox Code Playgroud)
最后我发现你无法做到我最初想要的。
相反,答案是添加第二个 php.ini 文件,该文件启用了 xdebug 和覆盖率。然后在我的 build.xml 中我使用以下命令来运行它。
php -c /usr/local/lib/php-coverage.ini /usr/bin/phpunit -c app/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8359 次 |
最近记录: |