我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代碼,線,不應該這樣調用:Cobertura,壓制線永遠不會來
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我做的所有控件,直到堅持行,當我的代碼工作正常,誤差線永遠到達現在它是如此。正因爲如此,我從來沒有%100線覆蓋。
我應該以某種方式壓制它嗎?
謝謝,比拉爾
我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代碼,線,不應該這樣調用:Cobertura,壓制線永遠不會來
try {
em.persist();
}catch(Exception) {
logger.error("can not create");
}
我做的所有控件,直到堅持行,當我的代碼工作正常,誤差線永遠到達現在它是如此。正因爲如此,我從來沒有%100線覆蓋。
我應該以某種方式壓制它嗎?
謝謝,比拉爾
雖然您可以從Cobertura覆蓋率報告中排除整個類別,但您不能排除特定的行或方法。
您應該接受在實際項目中無法實現100%的覆蓋率,因爲始終存在無法訪問的代碼或代碼,只能通過模擬複雜的條件組合才能實現。
正如其他答案建議,您可以嘗試通過嘲弄/剔除EntityManager
以在persist
上拋出異常來增加單元測試覆蓋率。但是,這幾乎可以做到。
我不會說從「持續」方法發生的異常不會發生。如果數據庫連接參數錯誤,或者有人使用映射註釋並弄亂了列名稱,會發生什麼?這都會引發異常。捕捉併吞下它可能會導致您的單元測試在異常失敗時成功。
感謝您的回覆。 – bilal 2011-05-15 19:44:45