Cobertura 如何与 JUnit 一起工作?

How does Cobertura work with JUnit?

我看不懂Cobertura是怎么和JUnit合作的。据我了解,cobertura 修改编译后的字节码并在此字节码中插入它自己的命令。行。之后我们 运行 Junit 框架并将我们的测试交给 运行。有谁能解释一下 cobertura 在什么时候获得了执行了哪些命令的信息?

Cobertura 使用 ASM,这是一个通用的字节码操作和分析框架。在 java 代码的每一行中,现有的 类 代码中添加了 3 行,用于计算它生成的报告的内容。当 Cobertura 包含在您的类路径中并正确配置并且您执行单元测试时,它将生成一个名为 cobertura.ser 的数据文件,用于生成 xml 或 html 报告。

基本用法:使用 Maven:http://www.mojohaus.org/cobertura-maven-plugin/usage.html

Cobertura 通过使用额外的语句检测字节码来监控测试,以记录在测试套件执行时哪些行已到达和未到达。

Cobertura 通过测试的行数和测试的分支数来计算覆盖率。对于第一次通过,这两者之间的区别并不是非常重要。 Cobertura 还计算了 class.

的平均 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