PHPUnit 未生成其三叶草覆盖率报告

PHPUnit is not producing its clover coverage report

虽然phpunit支持--coverage-clover [file]的说法,但是好像什么都不做

我在这台服务器上安装了 Jenkins 运行,其中包含 php 的 clover 覆盖插件。

这是我的输出:

> phpunit --coverage-clover coverage.xml
................................                                  32 / 32 (100%)

Time: 745 ms, Memory: 16.75Mb

> ls -l
(coverage.xml is not present)

我想找出为什么 clover XML 文件根本没有生成,也没有错误消息。即使使用 --debug 标志也不会产生任何与三叶草报告相关的内容。

版本信息:

> phpunit --version
PHPUnit 5.0.5 by Sebastian Bergmann and contributors.

> php --version
PHP 5.6.14-1+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with the ionCube PHP Loader + Intrusion Protection from ioncube24.com v.5.0.4, Copyright (c) 2002-2015, by ionCube Ltd.
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans

这是我的 PHPUnit XML 文件:

<phpunit bootstrap="tests/bootstrap.php">
    <testsuites>
        <testsuite name="tests/suite">
            <directory>tests/suite</directory>
        </testsuite>
    </testsuites>
</‌​phpunit>

你好像没有定义白名单。如果没有任何白名单,PHPUnit 5 将不会生成任何覆盖率数据。尝试这样的操作:

<phpunit bootstrap="./test/bootstrap.php" colors="true">
    <testsuites>
        <testsuite name="Tests">
            <directory>./test</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist addUncoveredFilesFromWhitelist="true">
            <directory>./lib</directory>
        </whitelist>
    </filter>
</phpunit>

如果系统上有多个版本的 phpunit,则会出现一些问题。

这里有一个 link 可能会有所帮助: https://github.com/sebastianbergmann/phpunit/issues/1253