2013-05-26 23 views
1

我一直在尋找一段時間,但我仍然無法找到一種方法去做我想做的事。JUnit - 所有測試類已執行時的監聽器?

我在整個項目中使用「Run as JUnit test」在Eclipse中運行我的單元測試。

我實現了一個自定義RunListener,它以單例形式記錄了一些測試結果信息(僅供參考,這並不意味着只記錄測試結果,我知道我們可以爲此導出junit報告,這是爲了獲取更多信息它們在測試方法自定義註釋中)。

一旦所有的測試都執行完畢,我想將singleton信息保存在磁盤上。 (關鍵字是ALL :))

我知道我可以重寫testRunFinished(這就是我現在做的), 但這種方法被稱爲每次一個單一類的所有測試都通過測試類執行(所以一旦)。

是否因爲Eclipse「Run as」默認將每個類視爲套件?

雖然它有效,但堅持單身國家數千次並不是真的有效。我想給持久化文件一個正確的名稱(像二進制版本+日期),但我不能現在,因爲我不知道什麼時候所有的測試已經執行,所以每次文件被持久化,它會創建一個新的文件(日期包含毫秒),雖然測試沒有結束(並且單身數據因此不完整)

任何想法?

謝謝!

+0

我找到了解決方法。我可以創建一個TestSuite並創建一個AfterClass,但這意味着我需要枚舉成千上萬個類,這很麻煩......我會尋找一種動態的方式將所有測試類添加到套件中,但我希望更好主意! – Icefire

回答

0

最後,我創建了一個TestSuite,使用@AfterClass靜態方法來只保留一次我的singleton狀態。

這意味着我必須在套件中添加所有測試類。

幸運的是,由於JavaRocky,我用自定義註釋動態地包含了所有測試類。

查看答案:How do I Dynamically create a Test Suite in JUnit 4?

如果有人有更簡單的方法來完成@AfterAllTestRuns ...讓我知道!