Java单元测试Mock的用法,关于接口测试的用例
@Testvoid getAllTradeDateList() {// 创建模拟对象Bc6CalculateService calculateService = Mockito.mock(Bc6CalculateService.class);String allTradeDateListStr = ExcelUtil.excelToJsonStr("bc6/NibTradeDate.xlsx");// 设置模拟行为List<NibTradeDateCloudDto> allTradeDateList = ObjectMapperUtil.parseArray(allTradeDateListStr, NibTradeDateCloudDto.class);Mockito.when(calculateService.getAllTradeDateList()).thenReturn(allTradeDateList);// 执行测试代码List<NibTradeDateCloudDto> testResult = calculateService.getAllTradeDateList();// 验证行为Mockito.verify(calculateService).getAllTradeDateList();// 断言结果assertEquals(allTradeDateList, testResult);}
这段测试代码是一个JUnit测试方法,用于测试Bc6CalculateService类的getAllTradeDateList方法。这里使用了Mockito库来模拟服务层的行为。以下是代码的详细分析:
-
方法注解:
@Test:表示这是一个JUnit测试方法。
-
创建模拟对象:
- 使用
Mockito.mock(Bc6CalculateService.class)创建了一个Bc6CalculateService的模拟对象calculateService。
- 使用
-
准备测试数据:
- 使用
ExcelUtil.excelToJsonStr("bc6/NibTradeDate.xlsx")从Excel文件中读取数据,并将其转换为JSON格式的字符串allTradeDateListStr。 - 使用
ObjectMapperUtil.parseArray(allTradeDateListStr, NibTradeDateCloudDto.class)将JSON字符串转换为NibTradeDateCloudDto类型的列表allTradeDateList。
- 使用
-
设置模拟行为:
- 使用
Mockito.when(calculateService.getAllTradeDateList()).thenReturn(allTradeDateList);设置当调用calculateService的getAllTradeDateList方法时,返回预设的allTradeDateList列表。
- 使用
-
执行测试代码:
- 调用
calculateService.getAllTradeDateList()方法,并将返回的结果存储在testResult中。由于calculateService是一个模拟对象,并且我们已经设置了它的行为,因此它会返回我们在第4步中设置的allTradeDateList。
- 调用
-
验证行为:
- 使用
Mockito.verify(calculateService).getAllTradeDateList();来验证getAllTradeDateList方法确实被调用了一次。
- 使用
-
断言结果:
- 使用
assertEquals(allTradeDateList, testResult);来断言testResult(从模拟对象获取的结果)与allTradeDateList(预设的期望结果)是否相等。
- 使用
整体来说,这个测试方法的目的是确保Bc6CalculateService的getAllTradeDateList方法能够正确地返回一个与预期结果相同的NibTradeDateCloudDto列表。如果getAllTradeDateList方法的实际实现与测试中的模拟行为不一致,或者返回的结果与期望的结果不匹配,那么测试将会失败。
相关文章:
Java单元测试Mock的用法,关于接口测试的用例
Testvoid getAllTradeDateList() {// 创建模拟对象Bc6CalculateService calculateService Mockito.mock(Bc6CalculateService.class);String allTradeDateListStr ExcelUtil.excelToJsonStr("bc6/NibTradeDate.xlsx");// 设置模拟行为List<NibTradeDateCloudDto…...
《心理学报》文本分析技术最新进展总结盘点
这些研究展示了文本分析在多个心理学领域内的强大应用,包括情境判断测验的自动化评分、自闭症儿童教育干预的学习效果评估、中文文本阅读的词切分和词汇识别机制、网络突发事件的负性偏向分析,以及小学生羞怯特质的预测与语言风格模型构建。通过采用机器…...
json格式文件备份redis数据库 工具
背景: 项目组要求使用 json备份redis缓存数据库内容。 附件里工具是一个包含redis-dump工具的镜像文件,方便用户在局域网中使用容器备份redis缓存数据库。 使用步骤: 解压tar文件,导入镜像 docker load < redis_dump_of_my…...
JAVA系列:NIO
NIO学习 一、前言 先来看一下NIO的工作流程图: NIO三大核心组件,channel(通道)、Buffer(缓冲区)、selector(选择器)。NIO利用的是多路复用模型,一个线程处理多个IO的读…...
偏微分方程算法之抛物型方程差分格式编程示例二
目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 采用向后欧拉格式计算抛物型方程初边值问题:...
linux 查看 线程名, 线程数
ps -T -p 3652 ps H -T <PID> ps -eLf | grep process_name top -H -p <pid> 查看进程创建的所有线程_ps 显示一个进程的所有线程名字-CSDN博客...
python class __getattr__ 与 __getattribute__ 的区别
在Python中,__getattr__是一个特殊的方法,用于处理访问不存在的属性时的行为。它通常在类中被重写,以便在属性访问失败时提供自定义的处理逻辑。 __getattr__ 的使用 1. 基本用法 __getattr__方法在访问类实例的某个不存在的属性时自动调用…...
[ C++ ] 类和对象( 下 )
初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。 class Date { public: Date(int year, int month, int day): _year(year), _month(month), _d…...
这么多不同接口的固态硬盘,你选对了嘛!
固态硬盘大家都不陌生,玩游戏、办公存储都会用到。如果自己想要给电脑或笔记本升级下存储,想要存储更多的文件,该怎么选购不同类型的SSD固态盘呐,下面就来认识下日常使用中常见的固态硬盘。 固态硬盘(Solid State Drive, SSD)作为数据存储技术的革新力量,其接口类型的选…...
使用IDEA远程debug调试
文章目录 应用背景开启方式IDEA设置启动脚本改造 参考资料 应用背景 springboot项目,部署到服务器上,需要开启远程debug跟踪代码。 使用idea开启远程debug。 开启方式 IDEA设置 选择 Edit Configuration 如图,点击加号,选择Re…...
开源自定义表单系统源码 一键生成表单工具 可自由DIY表单模型+二开
分享一款开源自定义表单系统源码,能够实现99%各行业的报名、预约、加盟申请、调查等应用,而且同时多开创建多个表单,支持自定义各种字段模型,市面上需要的表单模型都含了,随便自定义啦,含完整的代码包和详细…...
【java10】集合中新增copyof创建只读集合
在Java中,集合(如List、Set、Map等)是编程中常用的数据结构。然而,在某些场景下,我们可能希望集合中的数据是只读的,即不允许修改集合中的元素。在Java8及之前,要实现这样的功能,我们…...
python小甲鱼作业001-3讲
0.Python是什么类型的语言 编译型语言不同,Python 代码在执行时由解释器直接逐行解释执行,无需先编译成机器语言。这使得开发过程更快,因为你可以即时运行并测试你的代码。 Python 在运行时自动推断变量的类型,无需在代码中显式声…...
做电商,错过了2020年的抖音!那2024一定要选择视频号小店!
哈喽~我是电商月月 电商老板们集合了,问大家一个问题: 如果能让你回到三四年前,抖音才步入大众视野,这时候让你去做抖音小店,你愿意吗? 我敢相信!很多,错过当年抖音红利的商家,一…...
赛氪网与武汉外语外事职业学院签署校企合作,共创职业教育新篇章
5月23日下午14:00,武汉外语外事职业学院在藏龙岛校区食堂三楼报告厅隆重举行了2024年职业教育活动周优秀校外实习基地表彰仪式。本次活动旨在表彰在职业教育领域作出突出贡献的校外实习基地,同时加强校企合作,共同推动职业教育的发展。作为重…...
如何在文档中有效添加网格:技巧与实例
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何添加网格至关重要 二、网格添加的基本步骤 1. 确定网格类型和样式…...
设计模式10——装饰模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 装饰模式 是一种结构型模式。…...
如果返回的json 中有 ‘///’ 转换
// 将返回数据的三条/和替换空 rowData.Jsonobj rowData.Jsonobj .replace(/^\s*\/\/\/.*$/gm, //); // 将返回的替换成" 并且外面加个"" rowData.Jsonobj "${rowData.Jsonobj .replace(//g, ")}"; // 转换回来数据用两个 JSON.parse(JSON.par…...
JAVA学习-练习试用Java实现“多线程问题”
问题: 1.程序中需要开启两个线程(线程1和线程2) 2.线程1固定5秒钟执行一次 3.线程2固定10秒钟执行一次 4.开启程序如何做到线程1执行完成后再执行线程2并且在之后无论谁先执行都需等待对方执行完成后才可以开始执行 解答思路: 要实现线程 1 执行完成…...
SQOOP详细讲解
SQOOP安装及使用 SQOOP安装及使用SQOOP安装1、上传并解压2、修改文件夹名字3、修改配置文件4、修改环境变量5、添加MySQL连接驱动6、测试准备MySQL数据登录MySQL数据库创建student数据库切换数据库并导入数据另外一种导入数据的方式使用Navicat运行SQL文件导出MySQL数据库impo…...
OpenClaw安全防护:Phi-3-mini操作权限管控方案
OpenClaw安全防护:Phi-3-mini操作权限管控方案 1. 为什么需要OpenClaw安全防护 上周我在调试一个自动化文档整理任务时,差点酿成大错。当时OpenClaw连接的Phi-3-mini模型误解了我的指令,试图删除整个工作目录下的文件。虽然及时终止了进程&…...
快速验证dify部署方案:用快马生成环境检查与部署脚本原型
最近在折腾dify的本地部署,发现环境配置这块特别容易踩坑。作为一个开源AI应用开发平台,dify的部署涉及Python版本、Docker环境、端口占用等一系列依赖项检查,手动操作既繁琐又容易遗漏步骤。正好发现InsCode(快马)平台能快速生成这类工具的原…...
C++高性能网络库ZLToolKit资源池源码解析:如何用智能指针实现对象复用与自动回收
C高性能网络库ZLToolKit资源池源码解析:智能指针实现对象复用与自动回收 在C高性能服务器开发中,频繁的对象创建与销毁往往是性能瓶颈之一。想象一下这样的场景:一个直播服务器每秒需要处理数万条消息,每条消息都需要临时创建对象…...
C++11避坑指南:auto类型推导的7个常见错误及如何避免
C11避坑指南:auto类型推导的7个常见错误及如何避免 在C11标准中,auto关键字的引入极大地简化了代码编写过程,让开发者从繁琐的类型声明中解放出来。然而,这种便利性也带来了新的陷阱——类型推导的隐式规则可能导致意料之外的行为…...
2026年AI工具全面爆发:从ChatGPT到DeepSeek,谁在重塑下一代生产力?
还记得2023年ChatGPT刚出来时,大家都在惊叹"AI能聊天了"。但到了2026年,情况完全变了——AI不再是个炫技的玩具,而是实实在在地变成了"生产力工具"。程序员用它写代码,设计师用它做图,运营人用它写…...
YOLO11 + SAHI + TensorRT:三剑合璧,实现高精度小目标视频实时检测的工程实践
1. 为什么需要YOLO11SAHITensorRT组合方案 在安防监控、无人机巡检等实际场景中,小目标检测一直是个令人头疼的问题。想象一下,当你站在高楼往下看,地面上的行人和车辆就像蚂蚁一样小。传统的目标检测算法在这种场景下往往表现不佳࿰…...
用STM32F4做个PWM信号发生器:按键调参+OLED显示,示波器实测验证
用STM32F4打造高精度PWM信号发生器:从原理到实战 在电子开发与测试中,PWM信号发生器是不可或缺的工具。专业信号源价格昂贵,而基于STM32F4的开发板却能以极低成本实现类似功能。本文将带你从零构建一个带OLED显示和按键控制的PWM信号发生器&…...
Kubernetes与存储管理最佳实践
Kubernetes与存储管理最佳实践 1. Kubernetes存储模型 Kubernetes存储模型定义了如何在容器化环境中管理和使用存储资源,是集群存储管理的基础。 1.1 存储模型核心概念 Volume:Pod中的存储卷,可被多个容器共享PersistentVolume (PV)ÿ…...
K8s 下 PD 分离推理的稳定之道:RBG 编排实践与优化
1. 为什么需要PD分离推理架构? 大模型推理过程中最头疼的问题就是资源利用率低。传统架构下,一个GPU实例既要处理完整的prompt预填充(Prefill),又要负责逐token的解码(Decode),就像…...
别再死记硬背了!用这个动画+仿真,5分钟搞懂CMOS反相器到底怎么‘反’的
别再死记硬背了!用动画仿真5分钟搞懂CMOS反相器的翻转奥秘 第一次翻开数字电路教材时,那个由PMOS和NMOS组成的对称结构总让我困惑——为什么PMOS必须在上方?为什么输入高电平反而输出低电平?直到我在实验室里用仿真软件亲眼看到电…...
