java如何在使用Cobertura时忽略与记录器相关的If条件?
我正在尝试使用Cobertura增加JUnit测试用例的覆盖率
代码中有相当多的日志记录程序,以及检查是否启用了Info或Debug的条件。例:
if (LOGGER.isInfoEnabled()) {
LOGGER.info("Some info...");
}
现在很明显,这将没有其他部分。上述代码将有50%的分支覆盖率。我怎样才能做到100%
我已尝试忽略检测中的记录器调用:
<instrumentation>
<ignores>
<ignore>org.slf4j.Logger.*</ignore>
</ignores>
<excludes>
<exclude>**/Example.class</exclude>
</excludes>
</instrumentation>
但这只是把覆盖率降到了0%
有解决办法吗
任何帮助都将不胜感激
# 1 楼答案
看起来您正在使用SLF4J—因此最简单的方法是删除这些保护子句,因为您可以使用参数化日志记录
IntelliJ IDEA将为您转换为此-菜单>;分析>;按名称运行Inspection==“非常量字符串连接作为日志调用的参数”),并为找到的字符串提供快速修复。 见http://www.slf4j.org/faq.html#logging_performance
# 2 楼答案
你的配置
失败了。 使用
并删除排除配置