2015-03-19 46 views
0

我想知道如何測量Java的代碼覆蓋率。對於一個班級,我的單元測試涵蓋了大部分功能,但覆蓋率約爲44%。我們在我們公司使用一種定製工具,並想知道通常如何測量覆蓋率。Java代碼覆蓋漏洞說明?

什麼是理想的代碼覆蓋百分比?

+0

我記得當我在學校時這樣做,我的老師建議100%是理想的,但實際上,我會說超過65%的任何事情都應該這樣做。 – ryekayo 2015-03-19 00:49:20

+1

沒有理想的代碼覆蓋百分比,您必須爲自己/您的組織設置欄。如果您需要測試的核心功能已被覆蓋,那麼您可以瞄準100%並編寫毫無意義的測試用例或滿足20%。這一切都取決於你的使用案例 – tinker 2015-03-19 00:51:46

+0

重複:http://stackoverflow.com/questions/90002/what-is-a-reasonable-code-coverage-for-unit-tests-and-why – OPK 2015-03-19 01:28:14

回答

1

取決於工具,代碼覆蓋率可能是由測試觸及的行或測試覆蓋的不同分支的數量來測量的。僅僅這個指標就不是很有趣 - 看看哪些線路沒有覆蓋。如果您使用的是Eclipse或IntelliJ,那麼您可以展示代碼覆蓋率視圖。

Emma和Cobertura都是體面的代碼覆蓋工具,但是會在相同的代碼+單元測試中給出不同的結果。

44%的代碼覆蓋率非常低。

如果您正在進行測試驅動開發,那麼您應該能夠實現90%以上的代碼覆蓋率,只有您從單元測試中排除的奇怪異常和小文件/網絡訪問片段。

如果你有44%的代碼覆蓋率,這可能是好的。你的代碼可能包含許多你現在沒有使用的獲取器/設置器,但是這些獲取器/設置器在那裏很方便。同樣,我注意到,通過hashCode或equals方法來執行所有路由並不值得安裝覆蓋率工具。如果你的代碼非常漂亮,並且有很多自動生成的無趣樣板,那麼這可能沒什麼大不了的。

像SonarQube這樣的工具對於可視化代碼覆蓋熱點和靜態代碼分析質量指標的組合非常重要。

不要使用古怪的內部工具,找到通常支持的東西。

+0

這似乎是合理的。我們決定60%是我們現在想要達到的目標,就像修補程序提到的那樣,我們希望集中注意力,以及未覆蓋哪些代碼,並在需要添加測試時致電。 – 2015-03-19 20:51:55