test coverate-04-测试覆盖率 Cobertura Cobertura/emma/jacoco 的差异对比?

拓展阅读

test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍

test 系统学习-05-test jacoco 测试覆盖率与 idea 插件

test 系统学习-06-test jacoco

关于 Cobertura

Cobertura是一个免费的Java代码覆盖率报告工具,基于jcoverage 1.0.5。详细信息请参阅Cobertura网页和维基。

从版本2.0.0开始,Cobertura遵循语义版本控制准则。

下载

您可以从中央仓库下载Cobertura。这包括用于独立命令行使用的分发版本。

要将其作为Maven依赖项使用,可以使用以下片段:

<dependency>
    <groupId>net.sourceforge.coberturagroupId>
    <artifactId>coberturaartifactId>
    <version>2.1.1version>
    <scope>testscope>
dependency>

版权

net.sourceforge.cobertura.javancss包中的代码版权属于 Chr. Clemens Lee(C)2000。

请参阅包含的文件 “LICENSE.txt”。

许可证

Cobertura是免费软件,大部分使用GNU GPL许可,您可以根据自由软件基金会发布的GNU通用公共许可证的第2版或(根据您的选择)任何以后的版本重新分发或修改它。有关详细信息,请查看此分发中包含的 “LICENSE.txt” 文件。Cobertura的部分内容根据Apache软件许可证第1.1版授权。

保修

Cobertura被分发,希望它是有用的,但没有任何保修;甚至没有适销性或适用于特定目的的默示保修。有关更多详细信息,请参阅GNU通用公共许可证。

Cobertura/emma/jacoco 的差异对比?

Cobertura、Emma(JaCoCo的前身)和JaCoCo都是Java代码覆盖率工具,它们在实现和特性上存在一些差异。

以下是它们之间的一些主要区别:

1. 实现原理:

  • Cobertura: 使用插桩技术,通过在字节码中插入特殊代码来追踪执行的代码路径。
  • Emma: 通过在源代码或字节码中插入探针代码来实现覆盖率分析。
  • JaCoCo: 与Emma类似,通过在字节码中插入探针代码实现覆盖率分析。JaCoCo是Emma的继任者,采用了更现代的方法和改进。

2. 支持的覆盖率度量:

  • Cobertura: 支持语句覆盖、分支覆盖、方法覆盖等。
  • Emma: 支持行覆盖、分支覆盖、方法覆盖、基本块覆盖等。
  • JaCoCo: 支持行覆盖、分支覆盖、方法覆盖、指令覆盖等。JaCoCo提供了更丰富的覆盖率度量。

3. 报告生成:

  • Cobertura: 生成HTML和XML格式的报告。
  • Emma: 生成文本、HTML和XML格式的报告。
  • JaCoCo: 生成HTML、XML和CSV格式的报告。JaCoCo的HTML报告相对于Cobertura和Emma更现代化。

4. 集成和支持:

  • Cobertura: 相对较轻量,适用于小到中型项目。
  • Emma: Emma本身已经不再积极维护,但它的继任者JaCoCo得到了广泛的支持。
  • JaCoCo: 目前是最为活跃和广泛使用的Java代码覆盖率工具,支持Maven、Gradle、Ant等构建工具。

5. 性能影响:

  • Cobertura: 有一些性能开销,特别是对于大型项目。
  • Emma: 与Cobertura类似,可能对大型项目的性能产生一定影响。
  • JaCoCo: 通过采用更现代的技术和算法,性能影响相对较小。

6. 对源代码的依赖:

  • Cobertura: 不需要访问源代码。
  • Emma: 不一定需要访问源代码,根据配置和使用情况而定。
  • JaCoCo: 不需要访问源代码,完全可以在没有源代码的情况下执行覆盖率分析。

7. 开发者社区:

  • Cobertura: 相对较小的社区,原始项目的维护相对较少。
  • Emma: Emma本身已经不再积极维护,但它的继任者JaCoCo有一个活跃的社区。
  • JaCoCo: 有一个大而活跃的社区,得到了广泛的支持。

8. 支持的Java版本:

  • Cobertura: 支持Java 5及以上。
  • Emma: 支持Java 2及以上。
  • JaCoCo: 支持Java 5及以上。

你可能感兴趣的:(test,测试覆盖率,junit,单元测试,unit,testing,学习)