我正在尝试使用 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%。
有解决办法吗?
如有任何帮助,我们将不胜感激。
最佳答案
看起来您正在使用 SLF4J - 因此最简单的方法是删除这些保护子句,因为您可以使用参数化日志记录。
IntelliJ IDEA 将为您转换为此内容 - Menu>Analyze>Run Inspection By Name == "Non-Constant String concatenation as argument tologging call")并为其找到的问题提供快速修复。 请参阅http://www.slf4j.org/faq.html#logging_performance
关于java - 使用 Cobertura 时如何忽略 Logger 相关的 If 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456447/