2012-09-04 50 views
3

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

+1

[还有的--stop-上的错误和--stop-接通故障交换机](http://www.phpunit.de/manual/current/en/textui.h​​tml#textui.clioptions ) –

+1

@MikeB - 那些将跳过*所有*进一步的测试 - 不仅仅是那些与所要求的相同的测试用例。 –

+2

@DavidHarkness这就是为什么我把它作为评论而不是答案。 OP没有深入研究请求背后的目标,所以我只是把它扔到那里。 –

回答

6

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

public function setup() 
{ 
    $this->subjectUnderTest = new SubjectUnderTest; 
    $this->assertPreconditionOrMarkTestSkipped(); 
} 

public function assertPreconditionOrMarkTestSkipped() 
{ 
    if ($someCondition === false) { 
     $this->markTestSkipped('Precondition is not met'); 
    } 
} 
6

戈登的答案,但没有在第一测试进入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; 
} 
相关问题