拓展阅读

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

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

test 系统学习-06-test jacoco

SonarQube

Docker learn-29-docker 安装 sonarQube with mysql

Ubuntu Sonar

opencolver 能力

代码覆盖率测量

OpenClover支持以下语言:

  • Java
  • Groovy
  • AspectJ

它可以追踪两种代码覆盖:

  1. 全局覆盖
  2. 每个测试的覆盖
  3. 分布式每个测试的覆盖

涵盖三种度量标准:

  • 方法覆盖
  • 语句覆盖
  • 分支覆盖

代码度量衡

OpenClover提供:

  • 超过20个内置的代码度量衡
  • 可以定义自定义度量衡的能力

它使用代码度量衡和覆盖数据来提供:

  • 用于代码包的“树状图”(热力图)
  • 用于类的“顶级风险”标签云
  • 用于类的“快速收益”标签云

工具集成

构建系统和框架:

  • Ant
  • Maven
  • Gradle
  • Grails
  • Griffon

持续集成服务器:

  • Jenkins
  • Hudson
  • Bamboo

开发者集成开发环境(IDEs):

  • Eclipse(也包括IBM RAD)
  • IntelliJ IDEA

其他工具:

  • Sonar
  • JIRA

测试框架集成

OpenClover专门支持以下测试框架:

  • JUnit 3 和 4
  • TestNG
  • Spock

它可以通过定义基于以下内容的自定义测试模式来支持其他测试框架:

  • 源文件
  • 类(名称、修饰符和注解)
  • 方法(名称、参数、返回类型、抛出异常、修饰符、注解、Javadoc标签)

它还处理以下测试迭代(参数化测试):

  • JUnit 4
  • Spock

报告

OpenClover可以生成以下格式的报告:

  • HTML(当前和历史)
  • XML
  • PDF
  • JSON
  • TEXT

HTML ‘current report’ 特性:

此报告显示与最近收集的覆盖数据相关的信息:

  • 全局代码覆盖率
  • 每个测试的代码覆盖率
  • 被测试覆盖的类
  • 覆盖给定类/方法/源代码行的测试
  • 独特的每个测试覆盖

覆盖数据与源代码一起显示,因此您可以轻松浏览:

  • 应用程序类
  • 测试类
  • 测试结果,包括:
    • 测试持续时间
    • 参数化测试
    • 可导航的堆栈跟踪

报告显示所有级别的覆盖数据和代码度量:

  • 项目、包(还包括子包聚合)、文件、类和方法
  • 您可以自定义显示的列
  • 您可以引入自定义度量

报告仪表板还显示图表:

  • 类覆盖分布
  • 类复杂性
  • 覆盖树状图

测试优化

OpenClover能够确定哪些测试需要重新运行以适应修改后的应用程序类。这可以极大地减少运行测试所需的时间。此功能适用于:

  • Ant
  • Maven
  • Grails
  • Eclipse
  • IDEA

它还可以改变测试执行的顺序:

  • 先运行失败的测试 - 以便尽快失败构建,获得更快的反馈
  • 随机运行 - 揭示由特定测试顺序隐藏的错误

数据管理和过滤

OpenClover在管理覆盖数据方面非常灵活。它可以:

  • 合并来自不同项目的覆盖数据
  • 为给定项目收集历史数据
  • 提供交叉报告链接

它还在定义代码覆盖测量范围的灵活性上超过其他覆盖工具。过滤器可以基于:

  • 路径/文件模式
  • 方法(允许按整个方法签名匹配)
  • 代码块类型(例如,静态初始化器)
  • 单个语句(通过正则表达式)
  • 方法的圈复杂代码
  • 任意部分(通过放置内联代码注释)

chat

详细介绍一下覆盖率工具 OpenClover

OpenClover 是一个用于Java应用程序的代码覆盖率工具,它用于测量测试套件执行期间代码的覆盖程度。

OpenClover 提供了详细的覆盖率报告,帮助开发人员了解其代码的测试覆盖情况。

以下是对 OpenClover 的详细介绍:

主要特点:

  1. 语言支持:
    • OpenClover 主要用于 Java 应用程序。它与 Java 编译器和构建工具(如 Ant、Maven、Gradle)集成,以实现代码覆盖率的测量。
  2. 语句和分支覆盖:
    • OpenClover 提供了语句覆盖和分支覆盖的详细报告。语句覆盖度表示测试执行过的代码行数,而分支覆盖度表示测试执行过的条件分支数。
  3. HTML 报告和 XML 报告:
    • OpenClover 生成易于理解的 HTML 报告,其中包括代码覆盖的各个方面,如行覆盖、分支覆盖和类覆盖等。此外,也可以生成 XML 格式的报告,以供进一步处理和分析。
  4. 历史追踪:
    • OpenClover 支持在不同构建之间进行历史追踪,使开发人员能够比较不同版本的代码覆盖率,并了解覆盖率的演变情况。
  5. IDE 集成:
    • OpenClover 提供与一些主流集成开发环境(IDE)的集成支持,如 Eclipse 和 IntelliJ IDEA。这使得在开发过程中能够方便地查看代码覆盖情况。
  6. 线程安全:
    • OpenClover 是线程安全的,可以在并行构建和测试中使用,而不会出现竞态条件或其他线程相关的问题。

使用步骤:

使用 OpenClover 可以按照以下步骤进行:

  1. 集成 OpenClover 到构建工具:
    • 在项目的构建脚本中配置 OpenClover 插件,以便在构建时执行代码覆盖率测试。
  2. 运行测试套件:
    • 执行测试套件以测量代码覆盖率。OpenClover 会在测试执行期间收集数据。
  3. 生成报告:
    • 在构建完成后,生成 OpenClover 的 HTML 报告或 XML 报告。这些报告包含了详细的覆盖率信息,帮助开发人员了解代码的测试覆盖情况。
  4. 分析报告和改进测试用例:
    • 分析报告以了解代码覆盖不足的部分,并相应地改进测试用例,以提高代码的测试覆盖率。

注意事项:

  • 授权:
    • OpenClover 是一个商业软件,因此在使用前需要获取相应的许可证。它也提供了免费版本,但功能可能受到一些限制。
  • 与其他工具集成:
    • OpenClover 可以与其他构建工具和测试框架(如 JUnit)集成,确保在项目的整个构建和测试过程中都能够获取准确的代码覆盖率信息。
  • 版本兼容性:
    • 与其他工具一样,确保 OpenClover 的版本与项目中使用的其他工具和库版本兼容。

总体而言,OpenClover 是一个强大的 Java 代码覆盖率工具,可以帮助开发人员提高代码质量,发现测试覆盖不足的部分,并进行相应的改进。

OpenClover 和 jacoco 对比有哪些优缺点?

OpenClover 和 JaCoCo 都是用于 Java 代码覆盖率的工具,它们有一些相似之处,同时也有一些不同之处。

以下是 OpenClover 和 JaCoCo 的一些优缺点对比:

OpenClover 优缺点:

优点:

  1. 分支覆盖度:
    • OpenClover 提供了详细的分支覆盖度报告,使得开发人员能够更全面地了解测试覆盖的质量。
  2. 历史追踪:
    • OpenClover 支持历史追踪,可以比较不同构建之间的覆盖率变化,帮助开发人员了解项目的演进。
  3. IDE 集成:
    • OpenClover 提供了与一些主流 IDE(如 Eclipse 和 IntelliJ IDEA)的集成支持,使得开发人员能够方便地在开发过程中查看代码覆盖情况。
  4. 线程安全:
    • OpenClover 是线程安全的,可以在并行构建和测试中使用,而不会出现竞态条件或其他线程相关的问题。
  5. 商业支持:
    • OpenClover 提供商业版本,对于一些大型项目,可能希望获得专业的技术支持。

缺点:

  1. 授权:
    • OpenClover 是一个商业软件,因此在使用前需要获取相应的许可证。虽然也有免费版本,但功能可能受到一些限制。
  2. 社区活跃度:
    • 相对于一些开源工具,OpenClover 的社区活跃度可能相对较低。

JaCoCo 优缺点:

优点:

  1. 开源:
    • JaCoCo 是一个开源项目,可以免费使用,并且具有广泛的社区支持。
  2. 易集成:
    • JaCoCo 易于集成到常见的构建工具(如 Maven、Gradle、Ant)和 CI 工具中,使得在项目中的使用变得更为简便。
  3. 广泛使用:
    • 由于 JaCoCo 是一个流行的开源项目,因此在开源社区和行业中被广泛使用,有更多的使用案例和支持。
  4. HTML 报告:
    • JaCoCo 生成易于理解的 HTML 报告,其中包括代码覆盖的各个方面,如行覆盖、分支覆盖等。

缺点:

  1. 分支覆盖度:
    • 相对于 OpenClover,JaCoCo 的分支覆盖度报告可能较为简单,对于一些需要详细分支覆盖信息的项目可能不够满足需求。
  2. 历史追踪:
    • JaCoCo 在一些版本中对于历史追踪的支持相对较弱,可能需要其他工具来实现类似的功能。
  3. 某些情况下的性能:
    • 在某些特殊情况下,JaCoCo 的性能可能受到一些影响,尤其是在高度动态的代码中。

总体而言,选择使用 OpenClover 还是 JaCoCo 取决于项目的具体需求、团队的偏好以及对于商业支持的需求。

对于大多数项目,JaCoCo 是一个受欢迎和成熟的选择,而 OpenClover 则适用于一些需要特定功能和商业支持的场景。

参考资料

https://openclover.org/