6

我有一个 PHPUnit 测试类,我想在测试运行中忽略它。我知道我可以通过重命名它以使其文件名中不包含单词 Test 来做到这一点,但我宁愿不这样做,因为它比我想要的更混淆了源代码控制水域。

有人有建议吗?

4

5 回答 5

15

该命令有几个选项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 中使用一个标签,将它们重新分组(例如,每个“功能块”一组);然后,您可以在命令行上使用--groupor--exclude-group选项来指定应该或不应该运行哪些测试。

在您的情况下,如果您无法修改测试,则 --filter 选项可能会有所帮助,具体取决于您的测试的命名方式(即,是否有办法识别您要运行的测试)

--filter
仅运行名称与给定模式匹配的测试。模式可以是单个测试的名称,也可以是匹配多个测试名称的正则表达式。


如果您不总是更改要运行的测试“组”,另一种解决方案可能是使用仅包含您要运行的测试的测试套件。

例如,看一下使用 XML 配置编写测试套件

于 2009-09-12T10:37:39.020 回答
6

只需重命名您的方法:

testFunctionality () { //废话 }

ignore_testFunctionality () { //blah }

于 2011-04-18T13:33:34.190 回答
4

我意识到这是一个已被接受的答案的老问题,所以我希望我没有打扰,但我只是想指出,为了完成,可以跳过测试。PHPUnit 不会执行不完整和跳过的测试。

当然,这是在每个测试级别上 - 但是,您可以通过将其放入课程中来巩固它' setUp()

只是一个提示。

于 2010-04-21T13:46:06.623 回答
1

我搜索了整个PHPUnit手册并没有找到任何东西。您可以出于测试覆盖的目的而忽略代码,但仅此而已。但是,这个ChangeLog(在一个明显的分支中)提到它将“忽略以.” 为前缀的测试文件名,我没有尝试过,但值得一试。或者你可以注释掉这个测试。我假设你想要 NUnit 提供的东西,它会报告被忽略的测试;我没有找到类似的东西。

于 2009-09-12T01:32:50.407 回答
1

我更喜欢为我的函数使用普通名称并放入函数 docBloc

/**
* @test
*/
public function getDetails()
{}

所以,当我不想运行这个测试时,我只需删除那个@test。另外,也许你会在这里找到一些有用的东西PHPUnit - 我在“排除”标记测试中添加的 XML 配置文件,我不想被 phpunit 覆盖。

于 2015-05-12T10:26:43.557 回答