mock数据,不使用springboot的单元测试

embedded/2024/10/18 16:49:09/

业务代码

package com.haier.configure.service.impl;import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.haier.common.util.RequestUtil;
import com.haier.configure.entity.LanguageTableDO;
import com.haier.configure.mapper.LanguageTableMapper;
import com.haier.configure.service.LanguageTableService;
import com.haier.configure.util.CheckDataUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import java.util.List;/*** @author A2001111* @date 2024/4/3010:24*/
@Slf4j
@Service
public class LanguageTableServiceImpl extends ServiceImpl<LanguageTableMapper, LanguageTableDO> implements LanguageTableService {@Overridepublic void test1() {System.out.println("业务1...");String appId = RequestUtil.getAppId();System.out.println("appid:"+appId);System.out.println("第一次调用-----");List<LanguageTableDO> list = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));for (LanguageTableDO languageTableDO : list) {System.out.println("循环结果1:"+languageTableDO.getChineseName());}System.out.println("第二次调用-----");List<LanguageTableDO> list2 = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));for (LanguageTableDO languageTableDO : list2) {System.out.println("循环结果2:"+languageTableDO.getChineseName());}System.out.println("第3次调用-----");List<LanguageTableDO> list3 = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));for (LanguageTableDO languageTableDO : list3) {System.out.println("循环结果3:"+languageTableDO.getChineseName());}System.out.println("业务2...");}}

需要mock静态方法RequestUtil.getAppId(),需要mock成员方法this.list(lambdaQuery);

/*** @author A2001111* @date 2024/9/30 9:07*/
package com.haier.configure.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.haier.common.util.RequestUtil;
import com.haier.configure.entity.LanguageTableDO;
import com.haier.configure.mapper.LanguageTableMapper;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.*;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;import java.util.ArrayList;
import java.util.List;import static org.mockito.Mockito.any;
import static org.mockito.Mockito.when;@MockitoSettings(strictness = Strictness.LENIENT)
class LanguageTableServiceImplTest<M extends LanguageTableMapper> {@InjectMocks@Spyprivate LanguageTableServiceImpl languageTableServiceImpl;@Mockprivate M mapper;private AutoCloseable mockitoCloseable;@BeforeEachvoid setUp() throws Exception {mockitoCloseable = MockitoAnnotations.openMocks(this);}@AfterEachvoid tearDown() throws Exception {mockitoCloseable.close();}@Testvoid test_getAllList_should_return_not_null_when_condition() throws Exception {// mock静态MockedStatic<RequestUtil> requestUtilMockedStatic = Mockito.mockStatic(RequestUtil.class);requestUtilMockedStatic.when(RequestUtil::getAppId).thenReturn("假数据哦");// setupLanguageTableDO languageTableDO = new LanguageTableDO();languageTableDO.setId(111L);languageTableDO.setCode("code");languageTableDO.setEnglishName("englishName111");languageTableDO.setChineseName("chineseName111");List<LanguageTableDO> list = new ArrayList<>();list.add(languageTableDO);LanguageTableDO languageTableDO2 = new LanguageTableDO();languageTableDO2.setId(222L);languageTableDO2.setCode("code");languageTableDO2.setEnglishName("englishName222");languageTableDO2.setChineseName("chineseName222");List<LanguageTableDO> list2 = new ArrayList<>();list2.add(languageTableDO2);// when(mapper.selectList(any(LambdaQueryWrapper.class))).thenReturn(list);// 也可以设置多次调用返回不同的结果,比如:第一次返回list,第二次返回list2,后续多次调用,都返回list2when(mapper.selectList(any(LambdaQueryWrapper.class))).thenReturn(list).thenReturn(list2);// run the testlanguageTableServiceImpl.test1();System.out.println("完毕");}}


http://www.ppmy.cn/embedded/120496.html

相关文章

Spring不能处理的循环依赖

文章目录 场景一&#xff1a;prototype 类型的循环依赖场景二&#xff1a; constructor 注入的循环依赖场景三&#xff1a;普通的 AOP 代理 Bean 的循环依赖–默认是可以的场景四&#xff1a;Async 增强的 Bean 的循环依赖总结 参考&#xff1a;https://blog.csdn.net/wang4896…

单片机学习笔记——入门51单片机

一、单片机基础介绍 1.何为单片机 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集&#xff08;依靠传感器&a…

AI绘画实现数字人2D形象生成及3D数字人视频生成

概述 随着人工智能技术的不断进步&#xff0c;AI绘画已经成为数字艺术创作领域的重要工具。本章将详细介绍如何利用AI绘画技术生成数字人的2D形象&#xff0c;并进一步将其转化为3D数字人视频。通过一系列实践步骤和Python代码示例&#xff0c;您将能够掌握从平台使用到系统部…

蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)

目录 一、前言 二、代码 实现功能&#xff1a;​编辑 按如图配置 定义变量 编写执行代码 显示在LCD上 加入按键效果 三、效果展示 四、代码开源 一、前言 ARR 即自动重装载值&#xff08;Auto Reload Register&#xff09;。相当于一个水杯&#xff0c;水杯容量&am…

YOLO11震撼发布!

非常高兴地向大家介绍 Ultralytics YOLO系列的新模型&#xff1a; YOLO11&#xff01; YOLO11 在以往 YOLO 模型基础上带来了一系列强大的功能和优化&#xff0c;使其速度更快、更准确、用途更广泛。主要改进包括 增强了特征提取功能&#xff0c;从而可以更精确地捕捉细节以更…

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元&#xff08;GRU&#xff09;门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元&#xff08;GRU&#xff09; 之前我们讨论了如何在循环神经网络中计算梯…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块&#xff0c;支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输&#xff0c;还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

Charles(青花瓷)抓取https请求

文章目录 前言Charles&#xff08;青花瓷&#xff09;抓取https请求 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&…