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。
因此,为了排除多个具有相同名称的文件,<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 文件位于该目录中的理由,因此这似乎是最好的方法。