7

我不想为所有脚本打开 xdebug 代码覆盖,但我确实希望能够为生成代码覆盖的每日 jenkins 构建打开它。

我尝试了以下

phpunit -d xdebug.coverage_enable=1 -c phpunit-coverage.xml.dist

但是我总是收到以下错误

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

关于如何让它工作的任何想法,而不必每次都更改 php.ini?

4

4 回答 4

8

是的,它可以但只能通过像这样运行它:

php -dxdebug.mode=coverage bin/phpunit --coverage-clover='reports/coverage/coverage.xml' --coverage-html='reports/coverage'

注意:“..Xdebug: [Config] 设置 'xdebug.coverage_enable' 已重命名,..”

于 2021-06-28T15:07:13.643 回答
1

最后我发现你不能做我最初想做的事。

相反,答案是添加第二个启用了 xdebug 和覆盖的 php.ini 文件。然后在我的 build.xml 中,我使用以下内容运行它。

php -c /usr/local/lib/php-coverage.ini /usr/bin/phpunit -c app/
于 2013-07-30T13:27:32.320 回答
1

使用 php 7.4 我必须使用-d xdebug.mode=coverage

因为我用php -n我的全线是-d zend_extension=xdebug.so -d xdebug.mode=coverage

于 2021-03-23T12:27:16.137 回答
1

使用 php 7.4 和 phpunit 9,可以使用 env 设置选项

XDEBUG_MODE=coverage /usr/bin/phpunit
于 2022-01-13T10:08:45.313 回答