2012-06-04 118 views
0

我使用JUnit自動執行功能測試。我遇到了一個問題:如果遵循「每個測試方法一個(重要)斷言」的規則,那麼每個測試用例(17個是最大的數字)最終會產生一堆6線測試方法。如果我把它們都放到一個測試方法中,我必須評論失敗的斷言,或者讓一半的測試永遠不會啓動。JUnit - 推遲聲明失敗

我不喜歡第一種方式,因爲它會啓動瀏覽器次數過多,並且看起來瀏覽器啓動+登錄/註銷是更「貴」和耗時比試運行本身。

第二種方法是再好不過的,因爲它引入了大量的手工操作在管理它的任何情況。

所以,我的問題是:1。 是什麼這種情況下,最好的做法是什麼? 2.是否有某種方法可以將測試失敗推遲到測試結束?我的意思是,不太重要的斷言是,這並不能阻止測試運行,但最終會導致測試失敗。

UPD:是的,我使用的硒。而且我有一個每個測試課的父類來統一他們的設置。

回答

0
  1. 您可以使用@BeforeClass和@AfterClass爲每個測試類一旦啓動和關閉瀏覽器,也可以創建一個啓動您的瀏覽器規則與@ClassRule使用它。
  2. ErrorCollector可能會有幫助。
+0

謝謝!似乎我正在尋找像ErrorCollector。希望我還沒有開始創造我自己的自行車來做到這一點:)你能推薦一些教程或使用它的例子嗎? – NothisIm

+0

只有JavaDoc,但如果您提供當前的測試,我可以幫助您。 –

0
@BeforeClass 
public static void beforeClass(){ 

    launchBrowser(); 

} 

@Before 
public void before() { 

    login(); 

} 

@AfterClass 
public static void beforeClass(){ 

    killBrowser(); 

} 

這可能是回答你的問題

+0

謝謝,在某些情況下可以做到。但是BeforeClass和AfterClass方法需要靜態變量 - 因此,瀏覽器實例對此應該是靜態的。我計劃在不久的將來同時啓動測試。這可能會弄亂一切。 – NothisIm

+0

當時我通過在每個類的構造函數中啓動瀏覽器來實現該目標 –

+0

並且每個類都有一個驅動程序實例。我們在談論硒嗎?也許你可以添加到你的問題thx –