mockito-02-spring aop 与 mockito 冲突及解决方案

拓展阅读

jmockit-01-jmockit 入门使用案例

jmockit-02-概览

jmockit-03-Mocking 模拟

jmockit-04-Faking 伪造

jmockit-05-代码覆盖率

mockito-01-入门介绍

mockito-02-springaop 整合遇到的问题,失效

现象

发现引入一个日志组件后,导致 mockito 测试失效了。

原因

日志组件中通过 aop 切面增强输出日志,mockito 也是这个原理。

所以二者存在冲突。

解决思路

1)将 mock 的数据设置到对应的 bean 中,解决 mock 失效问题。

2)将被 spring 代理的对象还原为原始对象,让 mockito 可以正常代理。

  1. 通过 spring 官方的 @MockBean 注解

方式1-设置 mock 对象

测试类:

public class HomeControllerTest extends TestCase {
   
    private MockMvc mockMvc;
    @InjectMocks
    private HomeController homeController;
    @Mock
    private UserService userService;
    @Before
    public void setUp(){
   
    MockitoAnnotations.initMocks(this);
    this.homeController = new HomeController();
    this.mockMvc = MockMvcBuilders.standaloneSetup(this.homeController).build();
.....
}

Controller 类

public class HomeController {
   
    @Autowired
    private UserService userService;
    .....
}

在这种情况下就会造成@Mock和@Autowired注入冲突,导致注入失败。

可以将测试类中加入反射注入即可:

@Before
public void setUp(){
   
    MockitoAnnotations.initMocks(this);
    this.homeController = new HomeController();
    ReflectionTestUtils.setField(homeController,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux课程____selinux模式

一、是什么 它叫做“安全增强型 Linux(Security-Enhanced Linux)”,简称 SELinux,它是 Linux 的一个安全子系统 二、有啥用 就是最大限度地减小系统中服务进程可访问的资源(根据的是最小权限原则)。避免…

三个对象组练习.java

题目:定义数组存储3部汽车对象;汽车属性:品牌,价格,颜色;创造3个汽车对象,数据通过键盘录入而来,并把数据存储到数组当中 分析: 在main()里面定义…

QT----基于QT的人脸考勤系统ubuntu系统运行,编译到rk3588开发板运行

目录 1 Ubantu编译opencv和seetaface库1.1 Ubantu编译opencv1.2 Ubuntu编译seetaface1.3 安装qt 2 更改代码2.1 直接运行报错/usr/bin/ld: cannot find -lGL: No such file or directory2.2 遇到报错摄像头打不开2.3 修改部分代码2.4 解决中文语音输出问题 3 尝试交叉编译rk358…

产品经理如何提高产品业务逻辑?4个重点

产品经理培养良好的产品业务逻辑能力,能够更准确地理解和挖掘用户需求,梳理出详实且符合实际业务场景的产品需求文档,从而确保项目开发的方向正确、目标明确。而清晰的产品业务逻辑有助于减少项目执行中的反复沟通和需求确认,有助…

《数据结构学习笔记---第七篇》---栈和队列的OJ练习

1. 括号匹配问题。OJ链接 step1:思路分析 : 1.括号匹配,我们首先考虑用栈实现,我们通过符号栈帧的思想知道,求前中后缀表达式的时候用的就是栈帧,操作数栈和符号栈。 2.根据常见的情况 考虑怎么使用栈,首先…

【产品经理】华为IPD需求管理全思路分享!

作为一名产品经理,会在日常工作中接收到各种需求,而解决需求要提供对应的解决方案。本篇文章以华为的IPD需求管理流程为例,探讨其需求管理思路,帮助产品岗位的你快速做好需求管理并解决方案。 一、理清什么是产品需求 说到这个话…

AcWing 528. 奶酪(每日一题)

目录 题目: DFS(BFS): 并查集: 总结: 原题链接:528. 奶酪 - AcWing题库 题目: 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的&am…

【C语言】内存函数(memmove)的使用和模拟实现

目录 前言memmove定义1.在cplusplus中的定义 memmove的模拟实现1、思路2、难点3、解决方法 模拟实现代码 前言 这篇文章讲述了memcpy的使用、模拟实现和一个未解决的问题内存函数(memcpy)的使用和模拟实现 当我们使用我们模拟的my_memcpy拷贝,当源拷贝地址与目标拷…

基于Axios封装请求---防止接口重复请求解决方案

一、引言 前端接口防止重复请求的实现方案主要基于以下几个原因: 用户体验:重复发送请求可能导致页面长时间无响应或加载缓慢,从而影响用户的体验。特别是在网络不稳定或请求处理时间较长的情况下,这个问题尤为突出。 服务器压力…

Intel Arc显卡安装Stable Diffusion

StableDiffusion是一种基于深度学习的文本到图像生成模型,于2022年发布。它主要用于根据文本描述生成详细图像,也可应用于其他任务,如内补绘制、外补绘制和在提示词指导下生成图像翻译。通过给定文本提示词,该模型会输出一张匹配提…

C语言编译与链接

前言 我们想一个问题,我们写的C语言代码都是文本信息,电脑能直接执行c语言代码吗?肯定不能啊,计算机能执行的是二进制指令,所以将C语言转化为二进制指令需要一段过程,这篇博客讲一下编译与链接,…

Go打造REST Server【二】:用路由的三方库来实现

前言 在之前的文章中,我们用Go的标准库来实现了服务器,JSON渲染重构为辅助函数,使特定的路由处理程序相当简洁。 我们剩下的问题是路径路由逻辑,这是所有编写无依赖HTTP服务器的人都会遇到的问题,除非服务器只处理一到…

【计算机网络篇】数据链路层(4.2)可靠传输的实现机制

文章目录 🍔可靠传输的实现机制⭐停止 - 等待协议🗒️注意 🔎停止 - 等待协议的信道利用率🗃️练习题 ⭐回退N帧协议🎈回退N帧协议的基本工作流程🔎无传输差错的情况🔎超时重传的情况&#x1f5…

Nomad Web更新没有最快只有更快

大家好,才是真的好。 很长时间没介绍运行在浏览器中的Notes客户端即Nomad Web更新情况。 不用安装,直接使用,还可以完美地兼容适应各种操作系统,Nomad Web一定是Notes/Domino产品现在和将来重点发展的用户访问模式。 不过&…

wsl kali在无缝模式下显示kali桌面的问题

Seamless mode shows the kali desktop 无缝模式下,同时显示kali的Panel和桌面 In Settings -> Session and Startup -> Current Session Change the “Restart Style” for the xfdesktop entry to “Never” Restart Win-KeX 高阶玩法 在Windows Te…

【MATLAB源码-第172期】基于matlab的小波变换能量率BP神经网络的机械轴承故障分析以及识别,附带程序说明。

操作环境: MATLAB 2022a 1、算法描述 在现代工业生产中,轴承是最为常见和关键的机械基础部件之一,其性能状态直接影响着整个机械系统的稳定性和可靠性。由于轴承在运行过程中不断承受高负荷和摩擦,故障发生的概率相对较高。轴承…

ICLR2024:南洋理工发布!改几个参数就为大模型注入后门

随着大语言模型(LLMs)在处理自然语言处理(NLP)相关任务中的广泛应用,它们在人们日常生活中的作用日益凸显。例如,ChatGPT等模型已被用于各种文本生成、分类和情感分析任务。然而,这些模型潜在的…

HarmonyOS实战开发-如何实现一个支持加减乘除混合运算的计算器。

介绍 本篇Codelab基于基础组件、容器组件,实现一个支持加减乘除混合运算的计算器。 说明: 由于数字都是双精度浮点数,在计算机中是二进制存储数据的,因此小数和非安全整数(超过整数的安全范围[-Math.pow(2, 53)&#…

如何使用Docker搭建WBO在线协作工具并实现无公网IP远程编辑本地白板

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

使用mybatis的@Interceptor实现拦截sql

一 mybatis的拦截器 1.1 拦截器介绍 拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。 1.2 语法介绍 1.注解Intercepts Intercepts({Signature(type StatementHandler.class, method “…
最新文章