所以我想从我的Testsuite中排除一个直接导演:
<testsuite name="PHPUnitWillKillMe">
<directory>src/*/Bundle/*/*Bundle/Tests</directory>
<exclude>src/*/Bundle/*/*Bundle/Tests/Controller/</exclude>
</testsuite>
应测试控制器以外的所有内容。
事情是,它不起作用。当我运行时,PHPUnit仍在src / / Bundle / / * Bundle / Tests / Controller /中运行所有测试 phpunit --testsuite PHPUnitWillKillMe
有什么想法吗?
最诚挚的问候!
我试过的PHPUnit版本是3.7.21和3.7.28。
答案 0 :(得分:9)
我在我的Symfony演示项目上测试过它(Bundles
表明这是你正在使用的)并且我有同样的问题。这似乎是两个问题的组合。首先,使用-c
或--config
选项运行PHPUnit(PHPUnit 3.7.19)存在一个已知错误:
https://github.com/sebastianbergmann/phpunit/issues/928
在其他地方运行并使用--config指定配置文件时,排除将停止工作。
其次,exclude
指令在路径中存在任何globbing(*
)时似乎忽略/失败,因此通过删除globbing,它对我有用:
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
<exclude>../src/Blah/MyBundle/Tests/Controller/</exclude>
</testsuite>
</testsuites>
我发现这是唯一方式,可以根据需要排除MyBundle
中的测试。对于exclude
,全局操作 不起作用。但是,这意味着您必须添加尽可能多的exclude
指令,因为您要忽略的文件夹。
可能相关的gihub问题: https://github.com/sebastianbergmann/phpunit/pull/573
[...]此修复程序登陆4.0版本,因为它打破了向后兼容性。
exclude
路径问题)答案 1 :(得分:5)
刚出现类似问题,phpunit对群组有很好的支持:
...
--filter <pattern> Filter which tests to run.
--group ... Only runs tests from the specified group(s).
--exclude-group ... Exclude tests from the specified group(s).
--list-groups List available test groups.
...
你做的是
/**
* @group nonRunnableGroupName
*/
public function testSomething()
{ /* test here */ }
运行测试
$ phpunit -c /src --exclude-group nonRunnableGroupName