test coverate-06-测试覆盖率 OpenClover 是一个商业化的代码覆盖率工具 OpenClover 对比 jacoco

拓展阅读

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在管理覆盖数据方面非常灵活。它可以:

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

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

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

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 的性能可能受到一些影响,尤其是在高度动态的代码中。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

etcd基本介绍

etcd基本介绍 ETCD是SoreOs公司发布的一个分布式的、高可用的、key-value存储的数据库。基于Go语言实现,k8s中也使用了ETCD作为数据库。主要用于共享配置和服务发现。相对于zookeeper采用的Paxos,ETCD采用的是Raft算法,该算法具备的性能更佳…

Linux 启动过程详解

第 1 步 - 当我们打开电源时,BIOS(基本输入/输出系统)或UEFI(统一可扩展固件接口)固件从非易失性存储器加载,并执行POST(开机自检)。 第 2 步 - BIOS/UEFI 检测连接到系统的设备&am…

对话新七天创始人&CEO左英杰:品牌直播电商出圈“五步法”

整理 | 飞族 编辑 | 渔舟 出品|极新&北京电子商务协会 AI、AIGC、VR等数智化新技术发展日新月异,在直播电商领域的应用和探索逐渐深入,从内容生成、创意优化、购物体验、智能客服、精准营销等方面提供全方位全链路的赋能&#…

[ctfshow 2023元旦水友赛]web题解

文章目录 easy_include方法一 session文件包含方法二 pearcmd.php本地文件包含 easy_webeasy_login easy_include 源码 <?phpfunction waf($path){$path str_replace(".","",$path);return preg_match("/^[a-z]/",$path); }if(waf($_POST[…

JAVA集合框架总结

集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面&#xff0c;面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用数组存储对象方面具有一些弊端&#xff0c;而Java 集合就…

二叉树的层序遍历经典问题(算法村第六关白银挑战)

基本的层序遍历与变换 二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入…

【合阳新起点公益】“关爱留守儿童 守护牙齿健康”牙膏发放活动

为了关爱儿童的口腔健康&#xff0c;帮助他们改善生活状况&#xff0c;养成良好的刷牙习惯。合阳县未成年人保护中心、合阳县新起点公益服务中心组织链接到汕头市惠泽人志愿服务中心&#xff0c;为孩子们申请到一批儿童爱心牙膏套盒&#xff0c;分别于2023年12月22日、12月30日…

第一课:Transformer

第一课&#xff1a;Transformer 文章目录 第一课&#xff1a;Transformer1、学习总结&#xff1a;什么是语言模型&#xff1f;大语言模型&#xff08;LLM&#xff09;技术演变史注意力机制Transformer结构课程ppt及代码地址 2、学习心得&#xff1a;3、经验分享&#xff1a;4、…

uniappVue3版本中组件生命周期和页面生命周期的详细介绍

一、什么是生命周期&#xff1f; 生命周期有多重叫法&#xff0c;有叫生命周期函数的&#xff0c;也有叫生命周期钩子的&#xff0c;还有钩子函数的&#xff0c;其实都是代表&#xff0c;在 Vue 实例创建、更新和销毁的不同阶段触发的一组钩子函数&#xff0c;这些生命周期函数…

面试题:你如何理解 System.out.println()?

文章目录 前言首先分析System源码&#xff1a;out源码分析println分析 前言 如果你能自己读懂System.out.println()&#xff0c;就真正了解了Java面向对象编程的含义。 面向对象编程即创建了对象&#xff0c;所有的事情让对象帮亲力亲为&#xff08;即对象调用方法&#xff09…

2023年广东省网络安全A模块(笔记详解)

模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 假定你是某企业的网络安全工程师&#xff0c;对于企业的服务器系统&#xff0c;根据任务要求确保各服务正常运行&#xff0c;并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多…

Windows通过注册表修改socket缓冲区大小的方法

在 Windows 通过修改注册表来更改 UDP 缓冲区的大小&#xff0c;按照以下步骤进行操作&#xff1a; 打开注册表编辑器&#xff1a;按下 Win R 键&#xff0c;然后输入 "regedit" 并点击 "确定"。 导航到以下路径&#xff1a;HKEY_LOCAL_MACHINE\System\C…