我无法理解Cobertura如何与JUnit合作。据我所知,cobertura修改了编译的字节代码,并在此字节代码中插入了自己的命令。好。之后我们运行Junit框架并将其运行测试。任何人都可以解释cobertura在什么方面获取其命令执行的信息?
答案 0 :(得分:7)
Cobertura使用ASM这是一个通用的字节码操作和分析框架。在每行java代码中,有3行添加到现有类中,以计算它生成的报告的内容。当Cobertura包含在您的类路径中并正确配置并执行单元测试时,它将生成一个名为cobertura.ser的数据文件,用于生成xml或html报告。
基本用法:使用Maven:http://www.mojohaus.org/cobertura-maven-plugin/usage.html
答案 1 :(得分:2)
Cobertura通过使用额外的语句检测字节码来监视测试,以记录测试套件执行时哪些行和未到达的行。
Cobertura根据测试的线数和测试的分支数计算覆盖率。对于第一次通过,这两者之间的差异并不是非常重要。 Cobertura还计算了该班的McCabe平均复杂性。
如果使用maven,可以在POM中配置:
<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>
如果使用ANT,可以使用build.xml文件中的taskdef
语句进行配置:
<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
ant-cobertura整合的参考资料可以在 https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference