【发布时间】:2012-11-14 09:55:51
【问题描述】:
我目前使用Clover 来衡量我的Java 代码的代码覆盖率。我依赖的一项功能是能够从覆盖率报告中排除任意代码段:
///CLOVER:OFF because this case is simpler to verify by code read
if (lFile.isFile() &&
lFile.getName().endsWith(FILE_EXTN) &&
!lFile.delete())
{
throw new IOException("delete() failed for: " + lFile);
}
///CLOVER:ON
我发现这种排除可以更轻松地专注于测试有趣的逻辑,同时仍然实现 100% 的代码覆盖率。
是否有其他支持这种细粒度排除的 Java 代码覆盖工具(免费或付费)?整个类或整个方法的排除还不够好。
注意:我目前正在研究添加适合 JaCoCo (Issue #14) 的内容。
【问题讨论】:
-
EMMA 未来可能会增加类似的支持;参看。 emma.sourceforge.net/faq.html “未来版本正在考虑允许 EMMA 用户将任意方法标记为排除在覆盖范围之外的功能。”
-
不幸的是,这似乎不太可能,因为最新的 EMMA 版本是 2005 年发布的。不过,感谢您提供的链接。
-
不明白为什么关闭。这个问题是可以客观回答的。
-
我不知道任何副手。 JaCoCo 在运行时使用字节码检测,因此使用源代码 cmets 来控制它将是一个重大变化,这也是为什么 JaCoCo 问题 #14 更有可能使用注释来实现。也就是说,从哲学上讲,我不鼓励您提倡的做法,因为它强调“100%”的覆盖率,而事实上,坦率地说,这个数字纯粹是虚构的。在某些合法的情况下,即使通过测试(例如 assert 语句的错误分支),代码 应该无法访问,但我强烈希望通过 测试来涵盖“无趣”的逻辑 它。
-
只是出于兴趣,您为什么要排除某些内容?只需将您的限制降低到 80% 或任何有用的值。排除某事也可能导致排除重要部分。你可能有一个你认为不重要的部分并且会包括它,但你的一个同事的想法正好相反。
标签: java code-coverage