Phpunit 使用xdebug以外的其他代码覆盖率驱动程序
我想使用而不是生成代码覆盖率 我正在使用Docker,我已经安装了xdebug 如果我运行以下命令,是否可以确保xdebug不会影响测试执行Phpunit 使用xdebug以外的其他代码覆盖率驱动程序,phpunit,xdebug,pcov,Phpunit,Xdebug,Pcov,我想使用而不是生成代码覆盖率 我正在使用Docker,我已经安装了xdebug 如果我运行以下命令,是否可以确保xdebug不会影响测试执行 php-d xdebug.default_enable=0-d pcov.enabled=1 path/to/phpunit——覆盖率文本 我读过,但据我所知,xdebug必须被禁用 是否最好执行以下操作以实现最快的覆盖率,而不是运行上述命令 删除/截断xdebug配置 运行测试 php -d pcov.enabled=1 path/to/phpunit
php-d xdebug.default_enable=0-d pcov.enabled=1 path/to/phpunit——覆盖率文本
我读过,但据我所知,xdebug必须被禁用
是否最好执行以下操作以实现最快的覆盖率,而不是运行上述命令
php -d pcov.enabled=1 path/to/phpunit --coverage-text
即使在以下情况下禁用xdebug,也会降低性能成本:
xdebug.default_enable=0
其影响不容忽视
在运行测试之前,最好完全禁用xdebug
扩展
如果您使用
pcov
生成代码覆盖率,这将为您提供最佳性能。Xdebug和pcov都会使引擎的相同部分过载,因此它们不兼容,作者试图使它们兼容是没有意义的
如果要使用PCOV作为php代码覆盖率的驱动程序,则不得加载Xdebug
资料来源:我写了pcov
是否最好执行以下操作以实现最快的覆盖率,而不是运行上述命令?[禁用/启用xdebug/pcov而不是加载它们]
当您在命令行上运行php时,不需要处理调用phpunit的ini文件
相反,您可以使用命令行参数显式地进行运行时配置,这通常提供了一种有趣的效果
它与-n
开关一起工作,即禁用所有配置文件(有关用法信息,请参阅php--help
):
其中,[…]
代表特定于用例的参数,通常和特定于phpunit:
php -n <php-file> [<php-file-argument>...]
`------------ [...] --------------´
php -n path/to/phpunit --coverage-text
`--------- [...] -------------´
然后,您的测试套件很可能还会测试需要扩展的代码路径。调用phpunit将在失败中突出显示这些。因此,您必须添加它们(例如,此处为json):
这可能是有趣的部分,因为您了解了代码的扩展需求(至少对于单元测试而言)
最后添加选择的覆盖范围扩展。以pcov为例:
php -n -d extension=dom -d extension=tokenizer -d extension=json \
-d extension=pcov -d pcov.enabled=1 [...]
然后你会得到你的结果:
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.20 with PCOV 1.0.8
Configuration: phpunit-cfg.xml
............... 15 / 15 (100%)
Time: 00:00.191, Memory: 6.00 MB
OK (15 tests, 33 assertions)
Generating code coverage report in HTML format ... done [00:00.021]
与xdebug相比?为什么不:
hp -n -d extension=dom -d extension=tokenizer -d extension=json \
-d zend_extension=xdebug -d xdebug.mode=coverage [...]
^^^^^
并得出以下结果:
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.20 with Xdebug 3.0.4
Configuration: phpunit-cfg.xml
............... 15 / 15 (100%)
Time: 00:00.222, Memory: 8.00 MB
OK (15 tests, 33 assertions)
Generating code coverage report in HTML format ... done [00:00.024]
提示的
phpunit cfg.xml
文件是在启用了phpunit--generate configuration
和代码覆盖率的情况下创建的。为清晰起见,输出示例已缩短。重新加载php服务是什么意思?使用cli
sapi执行命令时,不使用fpm
sapi或php-fpm
服务。命令php/phpunit
不使用任何服务,只使用php
可执行文件。这个答案是正确的,但我想提供一个权威的答案,这样以后的读者就不会感到困惑了。。。您希望我编辑您的答案吗?
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.20 with PCOV 1.0.8
Configuration: phpunit-cfg.xml
............... 15 / 15 (100%)
Time: 00:00.191, Memory: 6.00 MB
OK (15 tests, 33 assertions)
Generating code coverage report in HTML format ... done [00:00.021]
hp -n -d extension=dom -d extension=tokenizer -d extension=json \
-d zend_extension=xdebug -d xdebug.mode=coverage [...]
^^^^^
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.20 with Xdebug 3.0.4
Configuration: phpunit-cfg.xml
............... 15 / 15 (100%)
Time: 00:00.222, Memory: 8.00 MB
OK (15 tests, 33 assertions)
Generating code coverage report in HTML format ... done [00:00.024]