Cobertura拒绝承认代码被覆盖

Met*_*002 2 java maven-2 code-coverage cobertura

我使用Maven(2)Cobertura插件创建代码覆盖率报告,我在方法中使用以下存根:

try {
    System.exit(0);
} catch (final SecurityException exception) {
    exception.printStackTrace();
}
System.err.println("The program never exited!");
Run Code Online (Sandbox Code Playgroud)

我知道我需要记录异常等,但现在不是重点...... Cobertura拒绝承认打印堆栈跟踪后的行被覆盖.也就是说,System.err.println语句前面带有'}'的行没有显示为覆盖.之前,该方法的结束大括号未显示为覆盖,因此System.err声明.任何想法如何说服cobertura的maven插件,因为System.err.println声明被覆盖,结束括号必须被覆盖?

哦是的,我使用模拟安全管理器抛出安全异常,因为这是我发现在System.exit调用后继续执行测试的最简单方法.

tva*_*son 8

我会看一下报道报道.仔细检查我的测试.请注意,代码确实已被覆盖,并且不用担心达到100%.代码覆盖最好用于查找您可能忽略了测试的区域,但只关注将100%覆盖率作为目标是一种坏习惯,可能导致您跳过需要编写的测试,因为您的工具显示100%.使用该工具可以做什么,但不要陷入让工具定义您所做的事情的陷阱.

  • 完美的报道是一种谬误.您需要花时间来处理复杂的代码,而不是吸气剂和制定者.覆盖范围仅在其帮助您实现付费目标的程度上才有价值 - 提供产品而非报告. (2认同)