是否可以从PHPUnit的代码覆盖中强行排除文件夹?
我遇到的问题是,我有一个Symfony 1.4项目,其中包含./lib/vendor/symfony/*
个文件夹。我希望以递归方式排除./lib/vendor/*
内的任何内容。
现在,我想要排除它们是否被我的测试隐含地覆盖,即我从不想看到这些文件夹。所以,我已将此位添加到我的phpunit.xml
配置文件中,但无论我做什么,它似乎都不会排除这些文件夹:
<filter>
<whitelist>
<exclude>
<directory>./lib/vendor/*</directory>
<directory>./lib/vendor/symfony/lib/*</directory>
</exclude>
</whitelist>
</filter>
在我看来,当代码被点击并且XDebug注意到它,PHPUnit将把它包含在代码覆盖中,无论如何。我的缺点是,这个代码已经被Symfony开发人员测试过了,所以不需要将它包含在我的报告中,搞乱了我的数字:P
答案 0 :(得分:24)
好的,所以我认为你可以拥有黑名单部分或白名单部分,结果你可以同时拥有这两部分,所以我将这些文件夹列入黑名单并且有效:
<filter>
<blacklist>
<directory>./lib/vendor</directory>
<directory>./lib/helper</directory>
</blacklist>
</filter>
答案 1 :(得分:5)
在或多或少的最新版本的PHPUnit中,从覆盖率报告中排除某些文件的正确方法是使用<exclude>
指令而不是<blacklist>
。例如:
<filter>
<whitelist>
<directory suffix=".php">src/</directory>
<exclude>
<directory suffix=".php">src/Legacy/</directory>
<file>src/example.php</file>
</exclude>
</whitelist>
</filter>
答案 2 :(得分:3)
观察:与黑名单相比,白名单(您想要包含在代码覆盖中的目录)使整个测试套件的phpunit执行速度更快。
AnimationExperimental.startAnimation({
node: this.refs['this'],
duration: 500,
easing: 'easeInOutCubic',
property: 'scaleXY',
toValue: [2,2]
}, () => {
console.log("callback called!");
});
测试:PHPUnit 4.5.0和PHP 5.5.9
答案 3 :(得分:0)
这些答案似乎都适用于旧版PHPUnit
我正在运行PHPUnit 5.7.23
并且在phpunit
中包含和排除文件时出现问题。 syntax似乎已发生实质性变化,只是部分向后兼容。我有一个复杂的要求,我需要包括&amp;排除了代码覆盖的单独目录(它是遗留系统)。
以下是phpunit.xml
中我需要的内容:
<testsuites>
<testsuite name="Unit Tests">
<directory suffix="Test.php">./tests</directory>
<exclude>./tests/blah/excluded_file_from_tests1.php</exclude>
<exclude>./tests/blah/excluded_file_from_tests2.php</exclude>
<exclude>./tests/blah/excluded_file_from_tests3.php</exclude>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./common/lib/included_directory</directory>
<exclude>
<directory suffix=".php">./common/lib/included_directory/core/blah/excluded_directory</directory>
</exclude>
</whitelist>
</filter>
所以:
<testsuites>
下我包括./tests
目录.tests
下,我想排除一组文件excluded_file_from_testsX.php
./common/lib/included_directory
所以当通过phpunit --coverage-html build/coverage
答案 4 :(得分:0)
与PHPUnit 9.0.1一起使用
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">DIRECTORY_TO_ADD</directory>
<directory suffix=".php">ANOTHER_DIR_TO_ADD</directory>
<exclude>
<file>ANOTHER_DIR_TO_ADD/file1_to_not_include.php</file>
<file>ANOTHER_DIR_TO_ADD/file2_to_not_include.php</file>
</exclude>
</whitelist>
</filter>