Cobertura如何与JUnit合作?

时间:2016-02-16 10:40:01

标签: java unit-testing testing junit cobertura

我无法理解Cobertura如何与JUnit合作。据我所知,cobertura修改了编译的字节代码,并在此字节代码中插入了自己的命令。好。之后我们运行Junit框架并将其运行测试。任何人都可以解释cobertura在什么方面获取其命令执行的信息?

2 个答案:

答案 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