拓展阅读
test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍
test 系统学习-05-test jacoco 测试覆盖率与 idea 插件
关于 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及以上。