2010-05-05 112 views
4

當我們的臨時服務器停機以進行每週維護時,我們有許多集成測試失敗。當登臺服務器關閉時,我們會發送特定的響應,以便在集成測試中檢測到該響應。當我得到這個響應而不是失敗的測試時,我想知道是否可以跳過/忽略那個測試,即使它已經開始運行。這將使我們的測試報告更清晰一些。如何忽略JUnit測試方法本身內的測試

有人有建議嗎?

回答

11

自從我使用JUnit以來已經有一段時間了,但是沒有辦法通過Assume一個條件成立?我認爲這與測試的合格/不合格有不同的意義。您的報告應該表明測試未運行。

編輯補充:Assume class

0

在你的測試中,你可以在執行Assert.whatever之前測試這個條件。如果測試失敗,則僅從方法返回而不運行代碼/斷言的其餘部分。

0

最簡單的解決辦法是建立分類你的測試分爲兩個套件:集成測試和純單元測試。然後開發一個腳本或其他一些自動化手段來確定服務器是否啓動,如果服務器關閉,則只需跳過集成測試套件即可。但是,如果將測試分組到這樣的套件由於某種原因而不實際,可以使用以下替代方法:

如果服務器不可用,您可以創建一個自定義Runner跳過測試。您可以編程運行程序以單獨確定服務器的可用性,也可以通過某些外部進程(如在測試階段之前執行的腳本)確定它,並在JVM上設置運行程序可以檢查的系統屬性(例如,將-Dcom.company.testrun.integration=false作爲命令在線參數)。

您可以在您的集成測試類中使用@RunWith註釋啓用您的自定義運行器,並對所有其他測試使用內置運行器,以免它們受到影響。或者,您可以使用您的跑步者所有測試,並創建一個新的註釋(例如@IntegrationTest),用於修飾您的集成測試方法。使用後一種方法,跑步者只有在服務器不可用時才應用其跳過邏輯測試方法具有特殊註釋。