在姜黄项目中,我们每晚维护一个仪表板。
在仪表板上,我们收集有关项目的统计信息,包括代码覆盖率,findbugs分析和其他指标。
我们一直在使用Maven EMMA插件来提供代码覆盖,但是遇到了EMMA问题。
在对类进行检测后,这会导致测试失败。
因此,由于在构建过程中需要准确的测试结果,因此我们禁用了代码覆盖率。
但是,我们仍然需要覆盖代码,更重要的是,我们还需要覆盖现有测试套件,这实际上是一个集成测试套件,而不是单元测试套件。
Cobertura和EMMA插件实际上都是设计用于单元测试的。 因此,我们必须解决该限制。
- 首先,我们需要对类进行检测。
- 其次,我们需要打包检测的类,并在以后的构建中使用它们。
- 需要告诉集成测试为其使用依赖的检测类。
- 生成结果的XML报告。
我尝试过这样做,但又不依赖于ant,但是每次我尝试使用maven-site-plugin并将其配置为生成报告时,都会抱怨cobertura:check没有正确配置。 在我们的情况下,我不需要运行检查,只需要生成的报告即可。 于是Ant和AntContrib得以营救。 以下是我想出的完整的Maven个人资料:
cobertura
net.sourceforge.cobertura
cobertura
true
1.9.4.1
org.codehaus.mojo
cobertura-maven-plugin
org/ebayopensource/turmeric/test/**/*.class
org/ebayopensource/turmeric/common/v1/**/*.class
cobertura-instrument
process-classes
instrument
org.apache.maven.plugins
maven-jar-plugin
cobertura-jar
post-integration-test
jar
cobertura
${basedir}/target/generated-classes/cobertura
org.apache.maven.plugins
maven-install-plugin
2.3.1
cobertura-install
install
install
cobertura
org.apache.maven.plugins
maven-antrun-plugin
verify
run
ant-contrib
ant-contrib
20020829
注意:请勿在此配置文件中使用cobertura:cobertura目标。 由于它将尝试对类进行两次检测,因此构建将失败。
必须使用Ant和AntContrib,因为没有cobertura:report目标,因为它希望在网站生成阶段运行。 但是,这会导致检查目标也可以运行,而我们则不需要。 因此,也许,我将制作一个补丁以添加报告目标,以便仅运行报告而不必运行站点目标。 希望这对某些人有帮助,因为我为此花费了很多时间。
祝您编程愉快,别忘了分享!
参考: Intelligent Cramps博客上的JCG合作伙伴 David Carver 使用Cobertura和Maven为集成和单元测试启用代码覆盖率 。
翻译自: https://www.javacodegeeks.com/2012/09/cobertura-and-maven-code-coverage-for.html