2012-11-21 54 views
1

我們有一個單元測試父基類和一組擴展基類的單元測試。我希望每個失敗的測試都能調用特定的方法。是可以創建一個「鉤子」或某個地方,即通過測試不會調用此方法,但失敗的測試在執行結束時做。可能爲失敗的JUnit測試創建鉤子?

+0

我能問你爲什麼要這麼做?如果你解釋你的總體目標,我們可以建議更好的解決方案。 –

+0

哦,當然,我想在測試失敗的時候在最後拿一個完整的頁面截圖 – user1340582

回答

5

你應該看看TestWatcher類。 創建自己的擴展TestWatcher的類,覆蓋失敗的(Throwable e,Description說明)方法並向測試添加規則。

public class MyWatcher extends TestWatcher { 
    @Override 
    protected void failed(Throwable e, Description description) { 
     callMyMethod(); 
    } 
} 

您的測試:

public class MyTest { 
     @Rule 
     public MyWatcher rule = new MyWatcher(); 

     @Test 
     public myTest(){...} 
} 

還有在TestWatcher有用的方法,如啓動()和成品()

+0

有沒有其他的東西需要擴展這個MyWatcher類呢,還是僅僅如果你像我在自定義項目中描述的那樣創建MyWatcher類就足夠了?另外,我不太明白@Rule標籤在這裏扮演的角色 – user1340582

+1

應該不是@ @規則MyWatcher規則=新MyWatcher();'? – atamanroman

+0

哦,如果阿塔曼羅曼是對的,那麼我明白了。 @Rule可以添加到父測試基類中,還是每個單獨的測試都需要? – user1340582