Cobertura Java7尝试使用资源

时间:2014-02-12 12:14:28

标签: java maven-cobertura-plugin

我在java 1.7上使用cobertura 2.6和maven

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <formats>
                        <format>html</format>
                        <format>xml</format>
                    </formats>
                </configuration>
            </plugin>

但如果我使用java7的新try-with-resource功能,它告诉我测试中缺少“non existing catch”块...它标记了try-block的结束括号

任何想法有什么不对?或者我如何测试它们?

1 个答案:

答案 0 :(得分:2)

问题是您可能没有使用资源块测试所有案例。 任何时候你写的东西:

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; 
  }
}

这不完全是这样,但总体思路是如此,所以你看到实际的代码分支比你想象的要多得多。 我希望这可以让您了解如何提高覆盖率。