Phpunit 如何使用pcov生成代码覆盖率报告?
我使用PHP8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。 在XML配置文件中,我使用以下命令:Phpunit 如何使用pcov生成代码覆盖率报告?,phpunit,pcov,Phpunit,Pcov,我使用PHP8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。 在XML配置文件中,我使用以下命令: (这只是我文件的相关部分) …并从PHPStorm启动命令“运行时覆盖”,它不会生成覆盖率报告 我已经停用了XDebug。PHPStorm向我展示了: 警告:必须设置XDEBUG_MODE=coverage或XDEBUG.MODE=coverage 我不知道为什么它会提到XDebug,因为我想使用pcov,因为我在“Run/Debug Configurations”
(这只是我文件的相关部分)
…并从PHPStorm启动命令“运行时覆盖”,它不会生成覆盖率报告
我已经停用了XDebug。PHPStorm向我展示了:
警告:必须设置XDEBUG_MODE=coverage或XDEBUG.MODE=coverage
我不知道为什么它会提到XDebug,因为我想使用pcov,因为我在“Run/Debug Configurations”popin中设置了它。
我尝试将报告放在另一个文件夹中,尝试生成HTML报告。。。通过终端启动命令。。。这些都不管用。我没有在谷歌上找到关于我的问题的任何信息
编辑
我尝试使用根本没有加载的XDebug和这个简化配置(使用--generate configuration
参数创建)并添加了前面的代码(没有路径覆盖)
./src/BlocksTest.php
../src
即使图书馆说:
正在生成Clover XML格式的代码覆盖率报告
当然有很多方法可以回答这个问题,在我们找到答案的同时,我留下了一些初稿
您的Phpunit XML配置: 否则,这两个选项中的任何一个都适用于PHP,请适当配置运行作业 但是,如果您不关心xdebug,而是pcov 我不知道为什么它会提到XDebug,因为我想在“Run/Debug Configurations”popin中[在PhpStorm中]设置它时使用pcov 关于xdebug配置的警告讲述了一个不同的故事:和 如果要使用PCOV作为php代码覆盖率的驱动程序,则不得加载Xdebug
<?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>
这意味着-正如原始警告显示Xdebug已加载一样-必须先卸载它
PhpStorm可以不卸载已配置PHP版本的扩展。它所做的就是根据您的选择添加扩展和配置设置
在与命令行(CLI)类似的PhpStorm中,您可以控制PHP可执行文件的环境参数和命令行参数
如果系统上php可执行文件的现有配置负载已经过大,作为最后手段,您可以首先使用-n
开关禁用所有扩展,然后根据需要添加扩展
[]-d扩展名=
[]-d zend_扩展=
- php发行版附带的已注释的
文件php.ini
- PHP手册中的相应页面(它还有一个)
- 扩展作者提供的附加文档,例如,通常有详细的配置说明,并涵盖所有ini设置
php-m | grep“pcov”
按预期显示pcov
。那么…我错过了什么?我可以想象这是令人困惑的,但也很难说仅仅从评论。请找到一种方法,您可以在命令行上增加PHP配置,从没有配置到运行phpunit,并选择代码覆盖率(包括pcov示例)此处:-这可能会为您提供您所需的见解,并有助于解决此处的问题。我不知道新警告中“路径覆盖支持”的具体含义。不知道pcov是否支持它。也许这是phpunitxml配置文件中的一些配置?我已经看到sebastianbergmann的项目phpcov
有关于路径覆盖的参数。那不是同一个司机吗?如果这真的不一样……我们怎么能同时拥有速度和路径覆盖率呢?我只是在没有'pathCoverage=“true”`的情况下进行了测试,但报告仍然没有生成。@lionelp:首先减少功能集。禁用路径覆盖
,例如删除该属性。然后冲洗并重复。
<coverage pathCoverage="true">
<report>
<clover outputFile="./coverage.xml"/>
</report>
</coverage>
$ XDEBUG_MODE=coverage !! # press enter