【发布时间】:2021-08-19 12:05:06
【问题描述】:
我使用 PHP 8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。 什么时候,在我的 XML 配置文件中,我使用这个:
<coverage pathCoverage="true">
<report>
<clover outputFile="./coverage.xml"/>
</report>
</coverage>
(这只是我文件的相关部分)
...并从 PHPStorm 启动命令“Run with coverage”,它不会生成覆盖率报告。
我已停用 XDebug。 PHPStorm 向我展示了:
警告:必须设置 XDEBUG_MODE=coverage 或 xdebug.mode=coverage
我不知道为什么它提到 XDebug,因为我想使用 pcov,因为我在“运行/调试配置”弹出窗口中设置了它。 我尝试将报告放在另一个文件夹中,尝试生成 HTML 报告...通过终端启动命令...这些都不起作用。我在 Google 上没有找到任何关于我的问题的信息。
编辑
我尝试了根本没有加载 XDebug 和这个简化的配置(使用 --generate-configuration 参数创建)并添加了之前的代码(没有路径覆盖)。
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
bootstrap="TestBootstrap.php"
cacheResultFile=".phpunit.cache/test-results"
executionOrder="depends,defects"
forceCoversAnnotation="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
failOnRisky="true"
failOnWarning="true"
verbose="true">
<testsuites>
<testsuite name="default">
<directory suffix="Test.php">./src/BlocksTest.php</directory>
</testsuite>
</testsuites>
<coverage cacheDirectory=".phpunit.cache/code-coverage"
processUncoveredFiles="true">
<include>
<directory suffix=".php">../src</directory>
</include>
<report>
<clover outputFile="./coverage.xml"/>
</report>
</coverage>
</phpunit>
即使图书馆说它仍然不起作用:
生成 Clover XML 格式的代码覆盖率报告 ...
【问题讨论】:
-
关于 XDEBUG_MODE 的警告表明 xdebug 的 phpunit 代码覆盖驱动程序正在加载。也许是这样:stackoverflow.com/a/57730778/367456 - 确保未加载 xdebug 扩展。该警告还表明它已加载 (via)
-
我知道我启用了 XDebug,但我认为使用 XDebug 禁用代码覆盖就足够了......我会尝试不使用它,但是,XDebug 对于代码覆盖的其他目的也很有用,如果我们想要使用 XDebug 的其他功能?我们必须每次都切换吗?
-
当我禁用 XDebug 并且
php -m | grep "pcov"按预期显示pcov时,它显示“没有可用的路径覆盖支持的代码覆盖驱动程序”。那么......我错过了什么? -
我可以想象这很令人费解,但仅从该评论也很难说。请找到一种方法,您可以在命令行上增加 PHP 配置,从没有配置到运行 phpunit 并选择代码覆盖范围(包括 pcov 的示例):stackoverflow.com/a/67912759/367456 - 这个可能会为您提供您正在寻找的见解,并帮助您解决此处的问题。
-
我不知道新警告中的“路径覆盖支持”是什么意思。不知道 pcov 是否支持它。也许这是 phpunit XML 配置文件中的一些配置?您可以禁用它以进行故障排除以找出答案。