如何忽略与Logger相关的If使用Cobertura时的条件?

时间:2016-02-17 12:15:19

标签: java logging junit cobertura maven-cobertura-plugin

我正在尝试使用Cobertura增加JUnit测试用例覆盖率。

代码中有很多Logger,还有If条件来检查是否启用了Info或Debug。例如:

if (LOGGER.isInfoEnabled()) {
    LOGGER.info("Some info...");
}

现在很明显,没有其他部分可以解决这个问题。上面的代码将有50%的分支覆盖率。我怎么做到100%?

我试过忽略仪表中的Logger调用:

<instrumentation>
    <ignores>
        <ignore>org.slf4j.Logger.*</ignore>
    </ignores>
    <excludes>
        <exclude>**/Example.class</exclude>
    </excludes>
</instrumentation>

但这只是将覆盖范围降低到0%。

有解决方法吗?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的配置

<ignore>org.slf4j.Logger.*</ignore>

失败。 使用

<ignore>org.slf4j.*</ignore>

并删除exclude config。

答案 1 :(得分:0)

看起来您正在使用SLF4J - 因此最简单的方法是删除那些保护条款,因为您可以使用参数化日志记录。

IntelliJ IDEA将为您转换为此菜单 - 菜单&gt;分析&gt;按名称运行检查==&#34;非常量字符串连接作为记录调用的参数&#34; )并为它找到的人提供快速解决方案。 见http://www.slf4j.org/faq.html#logging_performance