如果您使用的是pestphp,并且在执行测试期间,则使用覆盖范围选项,您将收到消息:
Unable to get coverage using Xdebug. Did you set Xdebug's coverage mode?
您应该检查以下三件事之一:
- 检查Xdebug配置;
- 设置xdebug_mode环境变量;
- 调整Phpunit配置文件。
检查Xdebug配置
我的第一个建议是在php.ini文件中检查您的Xdebug配置:
[xdebug]
zend_extension="xdebug.so"
xdebug.mode=develop,debug,coverage
xdebug.start_with_request = yes
使用xdebug.mode
参数,您必须检查coverage
值的存在。
设置xdebug_mode参数
指示Xdebug使用覆盖模式的另一种方法是使用XDEBUG_MODE
环境变量。
您可以在一个命令行中设置环境变量并启动测试:
XDEBUG_MODE=coverage ./vendor/bin/pest --coverage
在phpunit.xml文件中设置覆盖范围部分
如果前两个解决方案(非常相似)不起作用,则可以检查phpunit配置。
在引擎盖下,Pestphp使用了出色的工具phpunit。是的,作为PHP开发人员,我们很幸运拥有用于软件开发的最佳开源工具。
因此,Phpunit配置反映并影响Pestphp的执行。
对于覆盖范围操作,在Phpunit配置中,您应该使用coverage
部分。
在coverage
部分中,请确保您包括正确的目录(源代码所在的位置)。因此,例如,如果您在src/
目录中具有源代码,请检查是否具有coverage
部分,其中包含phpunit.xml
或phpunit.xml.dist
文件中的适当的include
:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
backupGlobals="false"
backupStaticAttributes="false"
colors="true"
verbose="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
... other configuration settings ...
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./src</directory>
</include>
</coverage>
</phpunit>
如果您有“ Unable to get coverage using Xdebug
”问题,请告诉我这些解决方案是否适合您。