我使用的Maven(2)的Cobertura插件來創建代碼覆蓋率報告,我有以下存根我使用的方法:的Cobertura拒絕承認代碼覆蓋
try {
System.exit(0);
} catch (final SecurityException exception) {
exception.printStackTrace();
}
System.err.println("The program never exited!");
我知道我需要記錄異常等,但這不是現在的重點...... Cobertura拒絕承認堆棧跟蹤打印後的行被覆蓋。也就是說,在System.err.println
聲明之前帶有'}'的行沒有被顯示爲被覆蓋。之前,該方法的結束大括號未被顯示爲涵蓋,因此System.err
聲明。任何想法我怎麼能說服cobertura的maven插件,因爲System.err.println
陳述被覆蓋,那末端大括號必須被覆蓋?
哦,是的,我使用模擬安全管理器來拋出安全異常,因爲這是我發現在System.exit
調用後繼續執行測試的最簡單方式。
我同意你的說法,但是當代碼大括號和大括號下的代碼被覆蓋時,它是非常令人討厭的,無法達到「完美」的代碼覆蓋率。當代碼是新鮮的時候,這些是我正在做的測試,所以沒有太多的功能。 – MetroidFan2002 2008-10-13 01:54:53
完美的報道是一個謬誤。你需要花時間來覆蓋複雜的代碼,而不是獲取者和設置者。只有在它能幫助你實現你付出的目標 - 提供產品而不是報告的範圍內,保險範圍纔是有價值的。 – ddimitrov 2008-10-13 02:04:32
當然,完美的覆蓋率並不是所有指標的最終結果,但我不同意你測試getter和setter的感受。很多時候,吸氣劑或二道過濾器已被修改成具有無證的副作用,並且很難追查。殺死一個測試解決了這個問題 – MetroidFan2002 2008-10-13 02:07:15