PHPUnit:当一个测试失败时跳过所有测试
我的测试用例中的所有测试都取决于第一次通过的测试。现在我知道我可以将@depends注释添加到其余的测试中,但我正在寻找一种快捷方式,可以将注释添加到其他所有测试方法中。有没有办法告诉PHPUnit,“如果此测试失败,请跳过其余的测试”您可以将特定的测试添加到setup()方法中。这将跳过所有未通过此测试的测试,例如PHPUnit:当一个测试失败时跳过所有测试,php,phpunit,Php,Phpunit,我的测试用例中的所有测试都取决于第一次通过的测试。现在我知道我可以将@depends注释添加到其余的测试中,但我正在寻找一种快捷方式,可以将注释添加到其他所有测试方法中。有没有办法告诉PHPUnit,“如果此测试失败,请跳过其余的测试”您可以将特定的测试添加到setup()方法中。这将跳过所有未通过此测试的测试,例如 public function setup() { $this->subjectUnderTest = new SubjectUnderTest; $this
public function setup()
{
$this->subjectUnderTest = new SubjectUnderTest;
$this->assertPreconditionOrMarkTestSkipped();
}
public function assertPreconditionOrMarkTestSkipped()
{
if ($someCondition === false) {
$this->markTestSkipped('Precondition is not met');
}
}
与Gordon的回答类似,但没有将第一个测试移动到
设置中,类似的方法是在第一个测试中根据成功/失败设置类级属性,并在设置中检查该属性。唯一的区别是第一个测试只执行一次,就像现在一样
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;
}
@MikeB-这些将跳过所有进一步的测试,而不仅仅是那些与mellowsoon要求的测试用例相同的测试。@DavidHarkness这就是为什么我把它作为一个注释而不是一个答案。OP没有深入研究请求背后的目标,所以我只是把它扔了出去。我认为他们希望代码能够继续到测试中的其他断言中。例如,如果我正在检查3个不同的条件,我想知道测试中的所有三个断言分别通过或失败,而不是必须检查一个,再次运行测试,检查下一个问题,甚至第三个问题。PHPUnit是否可以不被指示执行此操作,以便可以执行函数testXXXX中的所有测试?