PHPUnit代码覆盖所有测试文件和另一个目录


PHPUnit code coverage all test files plus another directory

我们正在努力使用phpunit从覆盖率报告中获得所需的结果。

以前,我们只捕获与单元测试相关联的文件的代码覆盖率(我认为这是白名单为空时的默认设置)。

现在,我们想要一个覆盖率报告,其中包括我们已经测试过的文件,以及一个或两个特定的目录(其中包含覆盖率为0%的文件)。这将为我们提供更现实的统计数据。

我们使用了一个xml配置文件来尝试实现这一点:

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">php/lib/</directory>
    </whitelist>
    <blacklist>
        <directory suffix=".php">/usr/share/php/SymfonyComponents/YAML</directory>
    </blacklist>
</filter>

然而,这个配置现在只包括白名单中指定目录的覆盖率报告。它并没有捕获我们为其编写单元测试的其他文件的覆盖率。

我如何实现捕获覆盖率的代码覆盖率配置

1) 所有已经具有与其关联的单元测试的文件

2) 其他可配置目录

以下是我们用来覆盖测试未覆盖的目录的示例。本节介绍应用程序。我们有不同的文件扩展名,因此也为您提供了目录后缀示例。

<!-- Add files not covered with tests into Code Coverage Analysis -->
<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".class">.</directory>
        <directory suffix=".fn">.</directory>
        <directory suffix=".php">lib/UTIL</directory>
        <exclude>
            <file>lib/UTIL/AJAX.class</file>
            <file>lib/UTIL/GetDump.fn</file>
            <directory>ExternalLibraries</directory>
        </exclude>
    </whitelist>
</filter>

IIRC,PHPUnit如果呈现,则使用<whitelist>;如果不呈现,则它使用<blacklist>。尝试完全删除<whitelist>