如何使PHPUnit忽略文件模式?

Ame*_*lia 5 php phpunit zend-framework2

我正在为一个项目编写代码覆盖率报告,并且在运行测试时包含或需要大量文件,这些文件实际上并不需要进行测试或添加到覆盖率报告(我正在使用Zend Framework 2; config + Module文件是罪魁祸首)。

有没有简单的方法可以简单地忽略文件模式modules/*/Module.php

这是我的黑名单:

<filter>
    <blacklist>
        <directory>config</directory>
        <directory>vendor</directory>
        <directory>module/*/config</directory>
    </blacklist>
</filter>
Run Code Online (Sandbox Code Playgroud)

但是,添加<file>module/*/Module.php</file>对html代码覆盖率报告没有影响;添加它对Module.php在覆盖率报告中包括文件没有任何影响。

Zend Framework bootstrap.php通常会在phpunit 文件中启动

Application::init(require "config/application.test.php")
Run Code Online (Sandbox Code Playgroud)

除了Module.php将每个模块的文件添加到黑名单之外,PHPUnit可以通过什么方法真正正确地做到这一点?我不是setUp在PHPUnit的测试案例中寻找使用该方法的答案;我正在寻找配置。

我正在使用PHPUnit 4.7 + 4.8。

Ame*_*lia 6

因此,为了排除多个具有相同名称的文件,<file>通常不会做任何事情,因为它只会完全匹配单个文件。

解决办法是使用<directory>, 而是使用后缀属性;

<phpunit
    bootstrap="tests/bootstrap.php"
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true">
    <testsuites>
        <testsuite name="Test Suite">
            <!-- functional tests -->
            <directory>tests</directory>
            <!-- unit tests -->
            <directory>module/*/test</directory>
        </testsuite>
    </testsuites>

    <!-- ignore folders for code coverage -->
    <filter>
        <blacklist>
            <directory>config</directory>
            <directory>vendor</directory>
            <directory>module/*/config</directory>
            <directory suffix="Module.php">module/*</directory>
        </blacklist>
    </filter>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

<directory suffix="Module.php">module/*</directory>将匹配Module.php以模块目录顶层结尾的多个文件,包括Module.php它自己。

由于在 Zend Framework 2 中没有任何其他 php 文件位于该目录中的理由,因此这似乎是最好的方法。