【发布时间】:2016-02-16 10:40:01
【问题描述】:
我不明白 Cobertura 如何与 JUnit 合作。据我了解,cobertura 修改已编译的字节码并在此字节码中插入它自己的命令。好的。之后,我们运行 Junit 框架并为其运行测试。谁能解释一下 cobertura 在什么时候获得了执行了哪些命令的信息?
【问题讨论】:
标签: java unit-testing testing junit cobertura
我不明白 Cobertura 如何与 JUnit 合作。据我了解,cobertura 修改已编译的字节码并在此字节码中插入它自己的命令。好的。之后,我们运行 Junit 框架并为其运行测试。谁能解释一下 cobertura 在什么时候获得了执行了哪些命令的信息?
【问题讨论】:
标签: java unit-testing testing junit cobertura
Cobertura 使用ASM,这是一个通用的字节码操作和分析框架。在 Java 代码的每一行中,现有类中添加了 3 行,以计算它生成的报告的内容。当 Cobertura 包含在您的类路径中并正确配置并执行单元测试时,它将生成一个名为 cobertura.ser 的数据文件,用于生成 xml 或 html 报告。
基本用法:使用 Maven:http://www.mojohaus.org/cobertura-maven-plugin/usage.html
【讨论】:
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
【讨论】: