2013-10-30 206 views
0

我知道PHPUnit中有一个选项为stop-on-failure,但我不希望它在任何测试失败时停止,只是在此特定测试失败时。如何在特定测试失败时停止运行测试?

例如,在我的setUp我连接到一个数据库,并在第一次测试中,我检查它是否连接到正确的数据库。如果失败了,我不能运行其余的测试。

回答

1

使用PHP的@depends功能。

如果测试依赖于另一个测试,则只有在其他测试成功时才会执行该测试。否则,它将被跳过。这可以让您更好地查明问题。

用法:在测试函数顶部添加一个PHPDOC块,该块只在其他测试成功时执行,并添加一行@depends testConnectToDb

有关更多详细信息,请参见http://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.dependshttp://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies

+0

这很好,但是我需要将其中一个添加到除第一个之外的每种方法?这是唯一的方法吗? – mpen

+0

您也可以使用PHPUnit中的'assertPreCondition'(和'assertPostCondition')函数在测试函数之前(或之后)运行断言。如果连接失败,您也可以将测试标记为在'setUp'中跳过,所以您不需要使用测试来检查测试(我建议为每个跳过的情况添加解释测试以明确为什么跳过测试)。 – Sven

相关问题