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及以上。
相关推荐
金銀銅鐵14 小时前
浅解 JUnit 4 第十一篇:@Before 注解和 @After 注解如何发挥作用?
junit·单元测试
金銀銅鐵2 天前
浅解 JUnit 4 第十篇:方法上的 @Ignore 注解
junit·单元测试
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习