1

我正在尝试使用 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%。

有解决方法吗?

任何帮助,将不胜感激。

4

2 回答 2

1

你的配置

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

失败。利用

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

并删除排除配置。

于 2016-02-17T12:20:38.747 回答
1

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

IntelliJ IDEA 将为您转换为此 - Menu>Analyze>Run Inspection By Name == "Non-Constant String concatenation as argument to logging call" )并为它找到的那些提供快速修复。见http://www.slf4j.org/faq.html#logging_performance

于 2016-02-17T14:56:04.693 回答