我有一个 PHPUnit 测试类,我想在测试运行中忽略它。我知道我可以通过重命名它以使其文件名中不包含单词 Test 来做到这一点,但我宁愿不这样做,因为它比我想要的更混淆了源代码控制水域。
有人有建议吗?
我有一个 PHPUnit 测试类,我想在测试运行中忽略它。我知道我可以通过重命名它以使其文件名中不包含单词 Test 来做到这一点,但我宁愿不这样做,因为它比我想要的更混淆了源代码控制水域。
有人有建议吗?
该命令有几个选项phpunit
可以帮助定义应该和不应该运行哪些测试:
$ phpunit --help
PHPUnit 3.4.0beta5 by Sebastian Bergmann.
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>
...
--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
在测试的 phpdoc 中使用一个标签,将它们重新分组(例如,每个“功能块”一组);然后,您可以在命令行上使用--group
or--exclude-group
选项来指定应该或不应该运行哪些测试。
在您的情况下,如果您无法修改测试,则 --filter 选项可能会有所帮助,具体取决于您的测试的命名方式(即,是否有办法识别您要运行的测试):
--filter
仅运行名称与给定模式匹配的测试。模式可以是单个测试的名称,也可以是匹配多个测试名称的正则表达式。
如果您不总是更改要运行的测试“组”,另一种解决方案可能是使用仅包含您要运行的测试的测试套件。
例如,看一下使用 XML 配置编写测试套件。
只需重命名您的方法:
testFunctionality () { //废话 }
到
ignore_testFunctionality () { //blah }
我意识到这是一个已被接受的答案的老问题,所以我希望我没有打扰,但我只是想指出,为了完成,可以跳过测试。PHPUnit 不会执行不完整和跳过的测试。
当然,这是在每个测试级别上 - 但是,您可以通过将其放入课程中来巩固它' setUp()
。
只是一个提示。
我更喜欢为我的函数使用普通名称并放入函数 docBloc
/**
* @test
*/
public function getDetails()
{}
所以,当我不想运行这个测试时,我只需删除那个@test。另外,也许你会在这里找到一些有用的东西PHPUnit - 我在“排除”标记测试中添加的 XML 配置文件,我不想被 phpunit 覆盖。