Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit:当一个测试失败时跳过所有测试_Php_Phpunit - Fatal编程技术网

PHPUnit:当一个测试失败时跳过所有测试

PHPUnit:当一个测试失败时跳过所有测试,php,phpunit,Php,Phpunit,我的测试用例中的所有测试都取决于第一次通过的测试。现在我知道我可以将@depends注释添加到其余的测试中,但我正在寻找一种快捷方式,可以将注释添加到其他所有测试方法中。有没有办法告诉PHPUnit,“如果此测试失败,请跳过其余的测试”您可以将特定的测试添加到setup()方法中。这将跳过所有未通过此测试的测试,例如 public function setup() { $this->subjectUnderTest = new SubjectUnderTest; $this

我的测试用例中的所有测试都取决于第一次通过的测试。现在我知道我可以将@depends注释添加到其余的测试中,但我正在寻找一种快捷方式,可以将注释添加到其他所有测试方法中。有没有办法告诉PHPUnit,“如果此测试失败,请跳过其余的测试”

您可以将特定的测试添加到setup()方法中。这将跳过所有未通过此测试的测试,例如

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中的所有测试?