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依赖项使用,可以使用以下片段:

xml 复制代码
<dependency>
    <groupId>net.sourceforge.cobertura</groupId>
    <artifactId>cobertura</artifactId>
    <version>2.1.1</version>
    <scope>test</scope>
</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及以上。
相关推荐
lulu_gh_yu37 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
幼儿园老大*2 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
2 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_2 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
啦啦右一2 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习
霍格沃兹测试开发学社测试人社区3 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了3 小时前
Scala学习记录,List
学习
王俊山IT3 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java4 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka