test mock-01-什么是 mock? Mockito/EasyMock/PowerMock/JMockit/Spock mock 框架对比

拓展阅读

test 之 jmockit-01-overview

jmockit-01-test 之 jmockit 入门使用案例

mockito-01-overview mockito 简介及入门使用

PowerMock

Mock Server

ChaosBlade-01-测试混沌工程平台整体介绍

jvm-sandbox 入门简介

单元测试中的 mock

单元测试是一种验证代码单元(通常是函数或方法)是否按照预期工作的测试方法。

Mock 是一种模拟或替代真实对象的方法,目的是在测试过程中隔离被测代码,以确保测试的是被测代码本身,而不是其依赖的外部组件。

java 有哪些 mock 开源框架?

常用的Java Mock框架:

  1. Mockito:

    • Mockito 是一个流行的Java Mock框架,提供了简单易用的API,用于创建Mock对象、模拟方法调用和验证行为。
    • 它支持验证方法的调用次数、参数匹配等,而且语法清晰,广泛应用于Java单元测试。
  2. EasyMock:

    • EasyMock 是另一个Java Mock框架,用于模拟对象和验证方法的调用。
    • 它使用比较简洁的语法,并支持创建Mock对象、设置期望值、验证调用等功能。
  3. PowerMock:

    • PowerMock 扩展了Mockito和EasyMock,提供了更强大的功能,例如可以模拟静态方法、构造函数、私有方法等。
    • PowerMock 在一些复杂的测试场景中非常有用,但需要小心使用,以免导致测试变得复杂和脆弱。
  4. JMockit:

    • JMockit 是一个功能强大的Java测试工具,它可以用于Mocking和Stubbing,支持对私有方法、构造函数、静态方法等的模拟。
    • 它还提供了对测试框架的集成支持,如JUnit和TestNG。
  5. Spock:

    • Spock 不仅是一个Mock框架,还是一个基于Groovy语言的测试框架。它结合了JUnit和Mockito的特性,提供了一种优雅而强大的测试语法。
    • Spock支持数据驱动测试、交互式的断言语法以及灵活的Mocking功能。
  6. JMock:

    • JMock 是一个早期的Mock框架,虽然现在使用较少,但仍然是一个可选项。它支持创建Mock对象、设置期望行为等。

mock 框架对比表格

功能/特性MockitoEasyMockPowerMockJMockitSpock
创建 Mock 对象✔ (Groovy 语法)
设置方法的期望行为
参数匹配
验证方法调用次数
模拟静态方法✘ (通过 PowerMock)✘ (通过 PowerMock)
模拟构造函数✘ (通过 PowerMock)✘ (通过 PowerMock)
模拟私有方法✘ (通过 PowerMock)✘ (通过 PowerMock)
模拟 final 类✘ (通过 PowerMock)✘ (通过 PowerMock)
数据驱动测试
支持异步测试
对测试框架的集成支持✔ (JUnit, TestNG)✔ (JUnit, TestNG)✔ (JUnit, TestNG)✔ (JUnit, TestNG)✔ (JUnit, TestNG)
支持 Groovy 语法

请注意,PowerMock 通常与其他Mock框架(如 Mockito 和 EasyMock)一起使用,以提供一些额外的功能,如模拟静态方法、构造函数等。

在这里插入图片描述

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

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

相关文章

K8S网络类型

k8s的网络类型 k8s的通信模式 1 pod内部之间容器与容器之间的通信,在同一个pod中容器是共享资源和网络,使用同一个网络命名空间,可以直接通信 2 同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实ip地…

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

作者:lesleyfootprint.network 数据源:Token Sector Dashboard ChatGPT 的热潮点燃了 AI 领域,AI 与区块链技术的融合成为市场关注的焦点。因为区块链的一个显著特征是它能够在链上安全地存储大量数据,这与 AI 模型对数据的密集…

mysql面试题:索引(B+树、聚集索引、二级索引、回表查询、覆盖索引、超大分页查询、索引创建原则)

索引 概念 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构**(B树)**,这些数据结构以某种方式引用(指向)数据&am…

安装虚拟机在虚拟机里面安装WindowsServer2012与步骤

目录 一、VMware介绍 1.1、概念讲解 1.2、VMware虚拟机的安装讲解 1.3、具体操作步骤 二、虚拟机安装WindowsServer2012演示 2.1、在虚拟机里配置具体步骤 (相当于制作启动U盘) 2.2、安装windows server2012步骤演示 三、Windows Server2012激活步骤演示 四、思维导…

golang并发安全-sync.map

sync.map解决的问题 golang 原生map是存在并发读写的问题,在并发读写时候会抛出异常 func main() {mT : make(map[int]int)g1 : []int{1, 2, 3, 4, 5, 6}g2 : []int{4, 5, 6, 7, 8, 9}go func() {for i : range g1 {mT[i] i}}()go func() {for i : range g2 {mT[…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 🍔发放优惠券🎆基本操作🎄数据库表🛸思路🌹代码实现 🎆完善后的操作🛸乐观锁🌹代码实现 🍔一人仅一张优惠券🛸思路🌹代码⭐代码分析 &am…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言:新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言: 大家如果没有看过前几章git的基础操作的话,推荐先看一下,看完再来看这个远程操作&#xf…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结: 《2022年总结:道阻且长,行则将至》 《2021年总结:前路有光,初心莫忘》 《2020年总结,所有努力只为一份期待》 《2019年总结,平凡的我仍在平凡的生活》 现在…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 数据集合并缓存如何控制对象样式

作者:taco 最近在支持的过程中,遇到了一个新问题!之前研究功能的时候竟然没有想到。通常我们控制单个对象的显隐、颜色、偏移的参数都是根据对象所在的图层以及对象单独的id来算的。那么问题来了,合并后的图层。他怎么控制单个对象…

面试官:SpringBoot项目中,要如何1秒实现异步接口?

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

STM32逆变器方案

输入电压: 额定输入电压:DC110V 输入电压范围:DC77-137.5V 额定输出参数 电压:200V5%(200VAC~240VAC 可调) 频率: 42Hz0.5Hz(35-50 可调) 额定输出容量:1…

关于“Python”的核心知识点整理大全45

目录 15.4.6 绘制直方图 die_visual.py 注意 15.4.7 同时掷两个骰子 dice_visual.py 15.4.8 同时掷两个面数不同的骰子 different_dice.py 15.5 小结 第 16 章 16.1 CSV 文件格式 16.1.1 分析 CSV 文件头 highs_lows.py 注意 16.1.2 打印文件头及其位置 highs_l…

适合穷人创业项目低成本生意,2024热门创业项目

回收生意,一个月赚20万?别不信! 我们两个人靠回收倒闭的酒店和KTV的店内物品,一个月赚了20多万。大件就是家具家电、厨房设备、点唱机,小件就是床品、餐具,只要能卖钱的都收。 卖给谁呢?大部分…

office bookmarks

Word2007Util.java-CSDN博客

webstorm中直接运行ts(TypeScript)

参考:https://www.cnblogs.com/yangfanjie/p/12036118.html 1:安装ts: npm install -g typescript 2:安装直接运行所需依赖包: npm install -g ts-node 3:在设置中安装安装插件后重启 4:重启后就会发现在…

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

在短暂的沉寂,在与 Solana 手机 Saga 联合生态 Meme 币 Bonk 掀起一波 meme 浪潮,以及GPU 计算网路Render network 宣布将从公链Polygon迁往Solana 后,Solana 生态再次迎来爆发。随着 SOL 代币在 12 月暴涨,SOL 也在市值上超越了 …

前端进度条和进度条流光效果

前言 进度条的实现学习这个的,这里只是记录下自己笔记 https://bytefish.medium.com/css-awesome-trick-how-to-create-a-progress-bar-that-changes-color-according-to-progress-be9652ebdd1c 在线演示地址(原作者) https://codepen.io/bytefishmedium/pen/VwXYKQK 在线演示…

opencv和gdal的读写图片波段顺序问题

最近处理遥感影像总是不时听到 图片的波段错了,一开始不明就里,都是图片怎么就判断错了。 1、图像RGB波段顺序判断 后面和大家交流,基本上知道了一个判断标准。 一般来说,进入人眼的自然画面在计算机视觉中一般是rgb波段顺序表示…

Linux账号和权限管理

目录 前言 一、管理用户账号 1、Linux系统中用户账号类型 2、用户标识UID的分类 3、用户账号文件 4、用户账号的初始配置文件 5、用户账号的管理命令 5.1 useradd 5.2 usermod 5.3 passwd 5.4 userdel 二、管理组账号 1、Linux系统中组账号类型 2、组标识号GID的…