我們有兩個不同的相同接口實現。將其視爲參考和生產實施。這兩個實現由不同的團隊實現,目標是從兩個實現中獲得相同的結果。JUnit:對不同實現和細粒度結果狀態的相同測試
創建參考實現的團隊已經創建了一個基於Junit的大量測試用例(現在〜700個測試用例),並且這些單元測試在開發過程中經常運行。我們可以針對生產實施運行同一組測試用例。
生產實現的功能通過迴歸測試進行測試。但是,如果能夠對生產實施進行單元測試,則可以快速反饋我們是否每次獲得生產代碼的新版本時都會嚴重受損。
但由於缺少生產版本中的某些功能,或者由於已知錯誤而導致結果不同,因此並非所有測試都通過此實現。這使得很難早日發現迴歸。
這裏有幾類:
(A)測試用例僅供參考實現有意義的,絕不是針對生產實施的重要
(B)試驗情況在測試生產實現時只需要省略某些斷言(即參考實現中報告的附加值)
(C)已知不工作的測試用例生產執行,因爲某些功能發展滯後,但到目前爲止,應該以後包括
,我們有以下選擇:
搞亂我們的代碼與if語句周圍的斷言,只有工作在參考實現中。這解決了(B)但很難維護。
使用assumeTrue。 (A)這是可以的,但是在(B)中給出錯誤的印象一切都可以。
我想吃點什麼是
如果能夠跳過基於像assumeTrue運行時狀態某些測試,但跳過,而不是成功的爲這些應報告(C )
有考慮到測試情況是否知道有工作過多個結果狀態,給人
- 成功爲被稱爲前
- 修正了這是已知未以前
- 故障工作了這是已知未以前
- 迴歸工作了測試用例的測試案例已經奏效測試用例對於被稱爲已經奏效
- 跳過
之前有沒有人做過這樣的事情之前或者是它甚至有可能使用JUnit(最好在conjuncti測試用例使用Eclipse JUnit插件)?
我想提供的Junit這個信息的,無論是作爲代碼或註釋。事實上,eclipse插件確實對從前一次運行中檢索結果有某種支持,但沒有比較支持,結果僅存儲在本地機器上。 CI部分已經在今年晚些時候列在我的名單上。 – Axel 2011-03-16 12:24:57
說實話,我不知道JUnit提供任何支持傳遞給它以前的測試結果。即使有一種方法可以做到這一點,但每次測試結果不正確時編輯代碼/註釋都會涉及閱讀外部文件。您可以隨時檢索結果,並根據MatthieuF的建議進行比較,但在我看來,這似乎是重新發明了方向盤。 – Christina 2011-03-16 12:52:28
我提到的支持是由eclipse插件提供的,而不是JUnit本身。雖然必須手動註釋測試用例需要更多的工作,但它具有能夠標記應該正常工作的測試用例的優點,即使在最後一個版本中它失敗了。考慮一下,通過'@ExpectSuccess(condition =「version> = 123」)''這樣的條件在運行時設置這個集合將是一個很好的功能。 – Axel 2011-03-16 15:41:48