2012-09-04 64 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; 
} 
相關問題