Cobertura拒绝承认代码被覆盖
-
10-07-2019 - |
题
我使用Maven(2)Cobertura插件创建代码覆盖率报告,我在方法中使用以下存根:
try {
System.exit(0);
} catch (final SecurityException exception) {
exception.printStackTrace();
}
System.err.println("The program never exited!");
我知道我需要记录异常等,但现在不是重点...... Cobertura拒绝承认打印堆栈跟踪后的行被覆盖。也就是说,System.err.println
语句之前带有'}'的行未显示为已覆盖。之前,该方法的结束大括号未显示为覆盖,因此System.err
语句。任何想法如何说服cobertura的maven插件,因为System.exit
声明被覆盖,结束括号必须被覆盖?
哦是的,我使用模拟安全管理器来抛出安全异常,因为这是我在<=>调用之后让测试继续执行的最简单方法。
解决方案
其他提示
我会查看报道报告。仔细检查我的测试。请注意,代码确实已被覆盖,并且不用担心达到100%。代码覆盖最好用于查找您可能忽略了测试的区域,但只关注将100%覆盖率作为目标是一种坏习惯,可能导致您跳过需要编写的测试,因为您的工具显示100%。使用该工具可以做什么,但不要陷入让工具定义你所做的事情的陷阱。
我知道这是一个古老的问题,Cobertura已经解决了这个问题,但为了完整性,<!>“;} <!>是由内部自动引起的<!>;最后是<!>块。
请将您的代码视为:
try {
System.exit(0);
} catch (final SecurityException exception) {
exception.printStackTrace();
} finally {
// noop
}
幸运的是,某些版本不再发生这种情况。
不隶属于 StackOverflow