有没有办法检测PHPUnit测试是否在后台运行?

时间:2018-03-09 12:30:14

标签: php unit-testing phpunit tdd

PHPUnit有two special annotations表示测试应该在后台进程中运行:类注释@runTestsInSeparateProcesses影响当前类中的所有测试,以及测试注释@runInSeparateProcess影响目前的测试。

在某些情况下,当测试类需要打印一些输出时,这很有用,所以它不会搞乱PHPUnit自己的输出。

所以,这是我的问题:TestCase类是否意识到这一事实?它知道它何时在后台运行?如果是这样,有没有办法检测它?

我正在寻找类似$this->isRunningOnBackground()的内容。

我在文档中没有找到任何相关内容。

1 个答案:

答案 0 :(得分:0)

浏览PHPUnit的源代码,我在TestCase类$runTestInSeparateProcess中找到了一个布尔保护属性​​,当注释存在时,该属性设置为true。还有$runClassInSeparateProcess,但它设置为私有,因此您不会在子类上下文中访问它。

我们可以通过检查setUp()或tearDown()中的if ($this->runTestInSeparateProcess) {...}来检测测试是否在后台运行。