我正在開發一個項目,其中包含大量未覆蓋測試的遺留代碼。持續集成:確保新的提交已通過測試
有沒有辦法,我就可以建立,整合服務器檢查所有新提交過測試(比如,覆蓋率> 70%)的最小量什麼辦法?
從本質上講,我看到兩個選項:
- 莫名其妙定置了CI服務器時未覆蓋的單元測試的承諾變爲構建失敗。這將確保每個新代碼都有測試,並且每次更改都會增加對舊代碼的測試。
- 設置整個項目的覆蓋閾值,如果覆蓋百分比在提交後降低,則生成失敗。問題是,如果我刪除一個包含100條指令的類,並添加一個包含50條指令的新類,那麼覆蓋百分比就會升高,而無需編寫任何測試。
我更喜歡選項1,因爲它強制更改遺留代碼以進行單元測試。這應該會增加整體測試覆蓋率。
現在我們使用Jenkins作爲CI服務器,JaCoCo使用測試覆蓋率。 Maven用於構建項目,SVN是我們的主要源代碼控制。
請記住,100%的覆蓋率不一定是可能的,甚至不需要。覆蓋範圍數字也可以被操縱。爲測試類寫單元測試可能會人爲地誇大測試覆蓋率。 – 2013-04-03 18:51:06
@MikeRylander我知道,我甚至不夢想在這個項目上100%的覆蓋率。但我仍然認爲,迫使新的變化至少有一些報道是好的。 – 2013-04-03 18:54:41
我目前正在解決這個問題,主要解決@MikeRylanders的評論。現在http://pitest.org與版本控制集成在一起。下一個版本將允許通過scm狀態分析文件。以下版本將允許按日期範圍或提交進行分析,這將允許構建服務器檢查修改的代碼是否滿足給定的變異分數。 – henry 2013-04-19 16:13:30