2017-06-20 41 views
3

對於一個開發人員來來去去的體面大小的開源項目,有人可能會修復一個bug,而不會意識到其他人一段時間提交了一個禁用的單元測試(la @Ignore) 。我們希望找到被禁用的通過測試,以便我們啓用它們並更新錯誤跟蹤器,CC列表以及其他任何下游。尋找正在通過的Ignore'd測試

什麼是偶爾運行所有@ Ignore'd測試並確定正在傳遞的測試的最佳方法?我們在JUnit4中使用Java 1.6,用ant構建我們的項目並轉換爲gradle。我們使用Jenkins作爲CI。

幾個想法:

  1. 永久取代我們所有的@Ignore註釋與條件忽略 http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/

  2. 運行自定義JUnit4類亞軍改變@Ignore的行爲。 https://stackoverflow.com/a/42520871

  3. 暫時註釋掉所有@Ignore註釋以便它們運行。但是,我們需要一種方法來否定失敗。

+0

感謝您對此主題的不錯概述。 –

回答

1

對不起,這不是一個解決方案,而是另一個替代方案,已經爲我工作: 我的關鍵點是,不修改現有的(1000)的單元測試。所以沒有寬泛的代碼改變。沒有新的註釋,當然不是暫時的。

我所做的是覆蓋JUnit @Ignore檢測並通過classpath prepends創建該條件:如果該測試/類已列出或禁用,請單獨檢查一個控制文件。這是基於包/ FQCN /方法名稱和正則表達式模式。如果被覆蓋,即使在未更改的原始JUNit測試源中仍然有@Ignore,也可以運行它。

記錄結果,修改控制文件。沖洗並重復。