2015-03-19 49 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