我的测试用例中的所有测试都取决于第一个测试通过。现在我知道我可以将 @depends 注释添加到其余的测试中,但是我正在寻找一种快捷方式来将注释添加到其他所有测试方法中。有没有办法告诉 PHPUnit,“如果这个测试失败,请跳过其余的测试”?
问问题
1786 次
2 回答
6
您可以将该特定测试添加到您的 setup() 方法中。这将使所有未通过此测试的测试都被跳过,例如
public function setup()
{
$this->subjectUnderTest = new SubjectUnderTest;
$this->assertPreconditionOrMarkTestSkipped();
}
public function assertPreconditionOrMarkTestSkipped()
{
if ($someCondition === false) {
$this->markTestSkipped('Precondition is not met');
}
}
于 2012-09-04T17:09:40.017 回答
6
与 Gordon 的回答类似,但没有将第一个测试移至setUp
,类似的方法是在第一个测试中根据其成功/失败设置一个类级属性,并在setUp
. 唯一的区别是第一个测试只执行一次,就像现在一样。
private static $firstPassed = null;
public function setup() {
if (self::$firstPassed === false) {
self::markTestSkipped();
}
else if (self::$firstPassed === null) {
self::$firstPassed = false;
}
}
public function testFirst() {
... the test ...
self::$firstPassed = true;
}
于 2012-09-04T18:51:48.857 回答