让PHPUnit忽略了什么?

时间:2009-09-12 01:23:09

标签: php unit-testing phpunit

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

有人有建议吗?

5 个答案:

答案 0 :(得分: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.
...

这些可能不允许指定完全你想要的东西......但是他们可能会有所帮助。

有关详细信息,请参阅The Command-Line Test Runner


特别是,我有点像群组功能:只需在测试的phpdoc中使用@group标记,将它们重新分组(例如,每个“功能块”一组);之后,您可以使用命令行上的--group--exclude-group选项指定应该或不应该运行哪些测试。

在您的情况下,如果您无法修改测试,也许--filter选项可以提供帮助,具体取决于您的测试被nammed 的方式(即,如果有办法识别您想要运行的那些)< / em>:

  

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


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

例如,请查看Composing a Test Suite Using XML Configuration

答案 1 :(得分:6)

只需重命名您的方法:

testFunctionality (){ //胡说 }

ignore_ testFunctionality (){ //胡说 }

答案 2 :(得分:4)

我意识到这是一个老问题,并且已经接受了答案,所以我希望我不会干扰,但我只想指出完成的原因是skip tests可能。 PHPUnit不会执行不完整和跳过的测试。

当然,这是在每个测试级别上 - 但是,您可以通过将其放入“setUp()”类来巩固它。

只是单挑。

答案 3 :(得分:1)

我搜索了整个PHPUnit手册,但没有找到任何内容。您可以忽略代码以达到测试覆盖率的目的,但这就是它。但是,这个ChangeLog(在一个明显的分支中)提到它将“忽略以.为前缀的测试文件名”我没有尝试过,但它值得一试。或者您可以评论测试。我假设你喜欢NUnit提供的东西,它会报告被忽略的测试;我没有找到类似的东西。

答案 4 :(得分:1)

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

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

因此,当我不希望运行此测试时,我只是删除了@test。 另外,也许你会在这里找到有用的东西PHPUnit - The XML Configuration File 我在“排除”标签测试中添加了我不想被phpunit覆盖的内容。