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及以上。
相关推荐
猿类崛起@13 分钟前
百度千帆大模型实战:AI大模型开发的调用指南
人工智能·学习·百度·大模型·产品经理·大模型学习·大模型教程
viperrrrrrrrrr730 分钟前
大数据学习(40)- Flink执行流
大数据·学习·flink
l1x1n033 分钟前
No.35 笔记 | Python学习之旅:基础语法与实践作业总结
笔记·python·学习
飞的肖4 小时前
日志(elk stack)基础语法学习,零基础学习
学习·elk
dal118网工任子仪6 小时前
66,【6】buuctf web [HarekazeCTF2019]Avatar Uploader 1
笔记·学习
02苏_6 小时前
2025/1/21 学习Vue的第四天
学习
羊小猪~~7 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
约定Da于配置7 小时前
uniapp封装websocket
前端·javascript·vue.js·websocket·网络协议·学习·uni-app
东京老树根8 小时前
Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
笔记·学习·excel
Ronin-Lotus10 小时前
嵌入式硬件篇---ADC模拟-数字转换
笔记·stm32·单片机·嵌入式硬件·学习·低代码·模块测试