2011-05-14 92 views
2

我第一次使用cobertura。一切工作正常,但我奇怪的是, 有在我的代碼,線,不應該這樣調用:Cobertura,壓制線永遠不會來

try { 
    em.persist(); 
}catch(Exception) { 
    logger.error("can not create"); 
} 

我做的所有控件,直到堅持行,當我的代碼工作正常,誤差線永遠到達現在它是如此。正因爲如此,我從來沒有%100線覆蓋。

我應該以某種方式壓制它嗎?

謝謝,比拉爾

回答

5

雖然您可以從Cobertura覆蓋率報告中排除整個類別,但您不能排除特定的行或方法。

您應該接受在實際項目中無法實現100%的覆蓋率,因爲始終存在無法訪問的代碼或代碼,只能通過模擬複雜的條件組合才能實現。

正如其他答案建議,您可以嘗試通過嘲弄/剔除EntityManager以在persist上拋出異常來增加單元測試覆蓋率。但是,這幾乎可以做到。

+0

感謝您的回覆。 – bilal 2011-05-15 19:44:45

0

寫一個單元測試覆蓋異常拋出情況。

+0

這是不可能的,因爲我在做我的所有控制。當代碼達到此代碼時,將會正常工作。 – bilal 2011-05-15 19:48:52

0

我不會說從「持續」方法發生的異常不會發生。如果數據庫連接參數錯誤,或者有人使用映射註釋並弄亂了列名稱,會發生什麼?這都會引發異常。捕捉併吞下它可能會導致您的單元測試在異常失敗時成功。