Spring Boot单元测试使用MockBean注解向Service注入Mock对象
1. 背景介绍
我们在测试时有一个Service,我们需要测试Service,但Service内部依赖ServiceA、ServiceB,此时我们希望Mock ServiceA,ServiceB 注入真实对象。
class Service {private ServiceA A;private ServiceB B;public int methodA() { return A.a();}public int methodB() { return B.b();}
}
2.使用@MockBean注解来模拟依赖对象
在Spring Boot Test中使用@Spy注解标记Service对象,但是其余真实对象无法注入,因为@Spy注解只能部分模拟对象,而无法注入真实对象。在这种情况下,可以使用@Autowired注解来自动注入Service对象,并使用@MockBean注解来模拟依赖对象。
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceTest {@Autowiredprivate Service service;@MockBeanprivate ServiceA serviceA;@Testpublic void testMethodA() {// 模拟UserDao的部分方法Mockito.doReturn(1).when(serviceA).a(Mockito.any());// 调用UserService的方法int s = service.methodA();// 验证结果assertEquals(1, s);}@Testpublic void testOtherMethod() {// 使用真实的方法service.methodB();// 验证结果// ...}
}
我们使用了@Autowired注解来自动注入Service对象,并使用@MockBean注解来模拟serviceA对象。在testMethodA方法中,我们使用Mockito.doReturn方法来模拟ServiceA对象的部分方法,并调用userService.methodA方法进行测试。在testOtherMethod方法中,我们直接调用userService.otherMethod方法进行测试。
在使用Mockito进行单元测试时,可以使用@MockBean注解来模拟依赖对象,并使用@Autowired注解来自动注入需要测试的对象。这样,就可以在Spring上下文中同时使用模拟对象和真实对象,并进行更加全面和准确的测试
3. 总结
@MockBean注解是Spring Boot提供的一个注解,用于模拟依赖对象。它的作用是在Spring上下文中创建一个模拟对象,并将其注入到被测试对象中,以便进行单元测试。
相关文章:
Spring Boot单元测试使用MockBean注解向Service注入Mock对象
1. 背景介绍 我们在测试时有一个Service,我们需要测试Service,但Service内部依赖ServiceA、ServiceB,此时我们希望Mock ServiceA,ServiceB 注入真实对象。 class Service {private ServiceA A;private ServiceB B;public int me…...
Java中使用instanceof判断对象类型
记录:470 场景:Java中使用instanceof判断对象类型。例如在解析JSON字符串转换为指定类型时,先判断类型,再定向转换。在List<Object>中遍历Object时,先判断类型,再定向转换。 版本:JDK 1…...
postman测试后端增删改查
目录 一、本文介绍 二、准备工作 (一)新建测试 (二)默认url路径查看方法 三、增删改查 (一)查询全部 (二)增加数据 (三)删除数据 (四&…...
根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)
目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 一、数据库设计 1.1、数据库选择 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下&am…...
1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡
一、基于CentOS7和、构建LVS-DR群集 准备四台虚拟机 ip作用192.168.27.150客户端192.168.27.151LVS192.168.27.152RS192.168.27.152RS 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld安装ifconfig yum install net-tools.x86_64 -y1、DS上 1.1 配置LVS虚拟IP …...
android 如何分析应用的内存(十七)——使用MAT查看Android堆
android 如何分析应用的内存(十七)——使用MAT查看Android堆 前一篇文章,介绍了使用Android profiler中的memory profiler来查看Android的堆情况。 如Android 堆中有哪些对象,这些对象的引用情况是什么样子的。 可是我们依然面临…...
Spring 使用注解储存对象
文章目录 前言存储 Bean 对象五大注解五大注解示例配置包扫描路径读取bean的示例 方法注解 Bean Bean 命名规则重命名 Bean 前言 通过在 spring-config 中添加bean的注册内容,我们已经可以实现基本的Spring读取和存储对象的操作了,但在操作中我们发现读…...
一、初始 Spring MVC
文章目录 一、回顾 MVC 模式二、初始 Spring MVC2.1 Spring MVC 核心组件2.1.1 前端控制器(DispatcherServlet)2.1.2 处理器映射器(HandlerMapping)2.1.3 处理器适配器(HandlerAdapter)2.1.3 后端控制器&am…...
《爬虫》爬取页面图片并保存
爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…...
【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON
问题背景 这个报错发生在之前部署的一个前后端分离的项目中。后端使用的Spring Boot,前端使用的JavaScript,前后端交互使用Thymeleaf框架。 现象 项目组的另一个小伙伴说,突然有个页面打不开了,整个页面全空白。我F12打开浏览器…...
做接口测试如何上次文件
在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式…...
Java SPI机制详解-01
1. 概述 SPI(Service Provider Interface),是 Java 6 引入了一个内置功能,实现服务提供发现和加载机制,使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 ,将装配的控制权移到程序之外,这…...
由浅入深C系列六:C中实现字符串trim的功能
C中实现字符串trim的功能 简介设计思路代码实现运行效果 简介 一个项目中,需要用c语言实现对字符串中的字定字符进行过滤并从字符串的删除,查询了C语言的基本库,没有发现有这样的函数,于是发挥程序员的主观能力性,自力…...
博客网站添加复制转载提醒弹窗Html代码
网站如果是完全禁止右键(复制、另存为等)操作,对用户来说体验感会降低,但是又不希望自己的原创内容直接被copy,今天飞飞和你们分享几行复制转载提醒弹窗Html代码。 效果展示: 复制以下代码,将其…...
ubuntu下nfs服务安装
操作系统:ubuntu22.04.2 一、服务端安装与配置 1、在服务端安装nfs服务端组件 sudo apt install nfs-kernel-server 2、创建共享目录share并且授权所有人可以访问 sudo mkdir /shared sudo chmod -R 777 /shared 3、配置nfs sudo vim /etc/exports 这将允许…...
Unity框架学习--2
接上文 IOC 容器是一个很方便的模块管理工具。 除了可以用来注册和获取模块,IOC 容器一般还会有一个隐藏的功能,即: 注册接口模块 抽象-实现 这种形式注册和获取对象的方式是符合依赖倒置原则的。 依赖倒置原则(Dependence I…...
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查…...
82. 删除排序链表中的重复元素 II
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:设置一个新的哑元节点result,作为头节点,将head中不重复地节点依次链接到哑元节点后面,最后返回result.next 初始值&…...
centos 7.x 单用户模式
最近碰到 centos 7.9 一些参数设置错误无法启动系统的情况,研究后可以使用单用户模式进入系统进行恢复操作。 进入启动界面,按 e ro 替换为 rw init/sysroot/bin/sh 替换前 替换后 Ctrl-x 进行重启进入单用户模式 执行 chroot /sysroot 可以查看日…...
取证--理论
资料: 各比赛 Writeup : https://meiyacup.cn/Mo_index_gci_36.html 哔站比赛复盘视频: https://space.bilibili.com/453117423?spm_id_from333.337.search-card.all.click 自动分析取证四部曲 新建案例添加设备自动取证制作报告 取证大…...
终极Windows驱动签名绕过指南:3步解决硬件兼容性问题
终极Windows驱动签名绕过指南:3步解决硬件兼容性问题 【免费下载链接】DSEFix Windows x64 Driver Signature Enforcement Overrider 项目地址: https://gitcode.com/gh_mirrors/ds/DSEFix DSEFix是一款专为Windows x64系统设计的驱动签名强制覆盖工具&#…...
YOLOv8目标检测实战指南:5个核心技巧掌握人脸与人体检测模型
YOLOv8目标检测实战指南:5个核心技巧掌握人脸与人体检测模型 【免费下载链接】adetailer 项目地址: https://ai.gitcode.com/hf_mirrors/Bingsu/adetailer 在计算机视觉领域,YOLOv8目标检测模型已经成为实时目标检测的黄金标准。Bingsu/adetaile…...
告别裸奔开发:手把手教你用英飞凌Traveo II SDL7.5.0快速点亮第一个LED
从零到一:Traveo II SDL7.5.0开发环境搭建与LED控制实战 第一次接触英飞凌Traveo II这类车规级MCU时,许多开发者会被其多核架构和丰富的外设资源所震撼——这就像突然从自行车换到了F1赛车,兴奋之余又担心无从下手。作为过来人,我…...
如何用Tomodoro网页番茄钟打破分心魔咒:专业级时间管理工具全解析
如何用Tomodoro网页番茄钟打破分心魔咒:专业级时间管理工具全解析 【免费下载链接】tomodoro A pomodoro web app with PIP mode, white noise generation, tasks and more! 项目地址: https://gitcode.com/gh_mirrors/to/tomodoro 你是否曾陷入这样的困境&a…...
快速掌握AI动作魔法:ComfyUI-MimicMotionWrapper让静态图片动起来
快速掌握AI动作魔法:ComfyUI-MimicMotionWrapper让静态图片动起来 【免费下载链接】ComfyUI-MimicMotionWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper 你是否曾幻想过让照片中的人物翩翩起舞?是否想让静态角…...
OrCAD不同版本兼容性踩坑记:为什么17.4报SPCODD-385,而16.6就没事?
OrCAD版本兼容性深度解析:从SPCODD-385错误看工程文件迁移策略 上周团队里新来的硬件工程师小王遇到了一个奇怪现象:同一份设计文件在OrCAD 17.4中报出十几个SPCODD-385错误,换到16.6环境却只有零星提示。这让我想起三年前公司EDA工具升级时…...
Fansly内容备份终极指南:告别平台限制,掌握数字资产自主权
Fansly内容备份终极指南:告别平台限制,掌握数字资产自主权 【免费下载链接】fansly-downloader Easy to use fansly.com content downloading tool. Written in python, but ships as a standalone Executable App for Windows too. Enjoy your Fansly c…...
测试数据管理:AI解决方案大比拼
在数字化转型的浪潮中,软件测试从业者面临的核心挑战之一是高效管理测试数据。测试数据作为质量保障的基石,直接影响缺陷检出率、测试覆盖度和发布周期。传统方法依赖手动生成和脱敏,不仅耗时耗力,还常因数据多样性不足、安全风险…...
编程未来发展趋势
编程未来发展趋势:技术变革与无限可能 在数字化浪潮席卷全球的今天,编程作为技术发展的核心驱动力,正以前所未有的速度重塑世界。从人工智能的崛起到量子计算的突破,编程的未来充满无限可能。本文将探讨编程领域的三大发展趋势&a…...
PyInstaller打包YOLO目标检测exe,文件体积太大?试试这几个优化技巧
PyInstaller打包YOLO目标检测exe的7个极致瘦身方案 当你兴奋地用PyInstaller打包完YOLO目标检测项目,却发现生成的.exe文件像个臃肿的巨人——动辄500MB起步,甚至轻松突破1GB。这种"肥胖症"不仅让程序启动缓慢,更让分发变得困难。本…...
