没有配置白名单,将不会生成代码覆盖错误

时间:2018-06-22 09:26:49

标签: laravel phpunit phpstorm code-coverage

我正在尝试使用PhpStorm中的功能进行代码覆盖,但是它显示了此错误,

  

“未配置白名单,将不会生成代码覆盖率。”

我正在本地Mac机器上运行PHP 7.2。

编辑:我已经为白名单和登录添加了phpunit设置

这是我的phpunit.xml文件的样子:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit printerClass="Codedungeon\PHPUnitPrettyResultPrinter\Printer"
         backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>

        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist addUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./report" charset="UTF-8"
             yui="true" highlight="true"
             lowUpperBound="50" highLowerBound="80" />
    </logging>
    <php>
    </php>
</phpunit>

我也尝试设置

  

processUncoveredFilesFromWhitelist

代替

  

addUncoveredFilesFromWhitelist

但仍然是相同的错误

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。这可能会有帮助。

首先,请确保您可以在命令行上运行代码覆盖率。

然后,查看Phpstorm尝试运行的命令。在测试输出的第二行中给出:

Testing started at 16:44 ...
C:\...\php.exe -dxdebug.coverage_enable=1 C:/.../vendor/phpunit/phpunit/phpunit --coverage-clover C:\.\XXX.xml --no-configuration --filter "/(::XXX)( .*)?$/" App\XxxTest C:\XXX.php --teamcity
PHPUnit 7.3.3 by Sebastian Bergmann and contributors.
Error:         No whitelist is configured, no code coverage will be generated.

我试图自己在命令行上运行此命令,更改路径。

我注意到的是“ -无配置”。这意味着它甚至没有读取我的phpunit.xml文件。要解决此问题,请设置  设置-> 语言和框架-> Php -> 测试框架->“ 默认配置文件”添加到您的phpunit.xml文件。

您可能有其他问题,但这可能会为您指明正确的方向。

答案 1 :(得分:1)

答案 2 :(得分:0)

运行以下命令。它为我工作。我正在使用PHP 7.1,Symfony(1.x)PHPUnit(5.7)旧版。因此目录结构可能因版本而异。

symfony/lib> vendor/bin/phpunit --whitelist ../[valid dir name]/ 
--coverage-clover test.xml UnitTest ../[dir]/[file_name]

symfony/lib> vendor/bin/phpunit --whitelist ../plugins/ 
--coverage-clover test.xml UnitTest ../test/PluginAllTests.php

OR

symfony/lib> vendor/bin/phpunit --whitelist ../tests/ 
--coverage-clover test.xml UnitTest ../test/PluginAllTests.php