我在
java 1.7上使用cobertura 2.6和maven
org.codehaus.mojo
cobertura-maven-plugin
2.6
html
xml
但如果我使用java7的新try-with-resource功能,它会告诉我测试中缺少“non existing catch”块…它标记了try-block的结束括号
任何想法有什么不对?或者我如何测试它们?
最佳答案 问题是您可能没有使用资源块测试所有案例.
任何时候你写的东西:
try(Autocloseable ac = new Autocloseable()) {
//do something
} catch(Exception e) {
//Do something with e
}
编译器解释类似于:
Autocloseable ac = null;
Exception e = null;
try {
ac = new Autocloseable();
//Do something
} catch (Exception e1) {
e = e1
//Do something with exception
} finally {
if(ac != null) {
try {
ac.close();
} catch (Exception e2) {
throw e == null? e2 : e;
}
if(e != null ) throw e;
}
}
它不完全是这样,但它是整体的想法,所以你看到实际的代码分支比你想象的要多得多.
我希望这可以让您了解如何提高您的覆盖率.