【问题标题】:How does Cobertura work with JUnit?Cobertura 如何与 JUnit 一起工作?
【发布时间】:2016-02-16 10:40:01
【问题描述】:

我不明白 Cobertura 如何与 JUnit 合作。据我了解,cobertura 修改已编译的字节码并在此字节码中插入它自己的命令。好的。之后,我们运行 Junit 框架并为其运行测试。谁能解释一下 cobertura 在什么时候获得了执行了哪些命令的信息?

【问题讨论】:

    标签: java unit-testing testing junit cobertura


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。但是,我不明白 - 我们运行 junit 而不是 cobertura。如何从这 3 行添加代码报告生成?这 3 行代码中的每一个都写入 cobertura.ser 吗?
    • Cobertura 会在您运行单元测试时自动检测。当您在 POM(如果使用 Maven)或 build.xml 文件(如果使用 ANT)中配置它时,它会自动发生。您不是直接运行它,而是在正确配置后通过 Maven 插件调用它。 HTH
    【解决方案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

    【讨论】:

    • 感谢您的回答。然而,问题不在于如何使用 maven 或 ant 运行 cobertura。问题是 cobertura 如何与 junit 合作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2012-09-30
    • 1970-01-01
    • 2023-02-02
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多