Spring Boot集成Mockito快速入门Demo

embedded/2024/12/23 9:09:38/

1.什么是Mockito

Mockito是一个模拟测试框架,可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。

使用场景

  • 提前创建测试,TDD(测试驱动开发)
  • 团队可以并行工作
  • 你可以创建一个验证或者演示程序
  • 为无法访问的资源编写测试
  • Mock可以交给用户
  • 隔离系统

2.代码工程

实验目的

mock controller and service

pom.xml

spring-boot-starter-test 中包含 junit5 和 Mockito 相关jar。无需额外引入。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>Mockito</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>test</scope></dependency></dependencies>
</project>

controller

package com.et.mockito.controller;import com.et.mockito.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@RestController
public class HelloWorldController {@AutowiredHelloService helloService;@RequestMapping("/hello")public Map<String, Object> showHelloWorld(){Map<String, Object> map = new HashMap<>();map.put("msg", helloService.sayhi("hblog"));return map;}
}

service

package com.et.mockito.service;public interface HelloService {public  String sayhi(String name);
}
package com.et.mockito.service;import org.springframework.stereotype.Service;/*** @author liuhaihua* @version 1.0* @ClassName HelloServiceImpl* @Description todo* @date 2024/09/09/ 17:44*/
@Service
public class HelloServiceImpl implements HelloService{@Overridepublic String sayhi(String name) {return "hi"+name;}
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo(Mockito )

3.测试

mock controller

@Test
public void mockController() throws Exception {// mock servicewhen(helloService.sayhi("hblog")).thenReturn("harries");//mock controllerResultActions perform = this.mockMvc.perform(get("/hello"));log.info(perform.andReturn().getResponse().getContentAsString());//verify  responsibleperform.andExpect(status().isOk()).andExpect(MockMvcResultMatchers.content().json("{msg:harries}"));  // You don't need to write it in escaped json format
}

mock Service

@Test
public void mock1()  {//Mockito.when(helloService.sayhi(Mockito.anyString())).thenReturn("harries");when(helloService.sayhi("hblog")).thenReturn("harries");String  str = helloService.sayhi("hblog");log.info(str);Assert.assertNotNull(str);}
@Test
public void mock2()  {when(helloService.sayhi("exception")).thenThrow(new RuntimeException("mock throw exception"));String  str1 = helloService.sayhi("exception");}@Test
public void mock3()  {helloService.sayhi("hblog");Mockito.verify(helloService, Mockito.times(1)).sayhi(Mockito.eq("hblog")) ;}

4.引用

  • Mockito framework site
  • Spring Boot集成Mockito快速入门Demo | Harries Blog™

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

相关文章

【LeetCode 算法笔记】155. 最小栈

目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()…

OpenHarmony鸿蒙( Beta5.0)智能加湿器开发详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…

Vue3 Day1Day2-Vue3优势ref、reactive函数

Day1 1.1 Vue3的优势 更容易维护 组合式API 更好的TypeScript支持 更快的速度 重写diff算法 模板编译优化 更高效的组件初始化 更小的体积 良好的TreeShaking 按需引入 更优的数据响应式 Proxy setup中不存在this&#xff0c;如果想直接获取节点&#xff0c;就得放在o…

Grafana面板-linux主机详情(使用标签过滤主机监控)

1. 采集器添加labels标签区分业务项目 targets添加labels &#xff08;模板中使用的project标签&#xff09; … targets: [‘xxxx:9100’] labels: project: app2targets: [‘xxxx:9100’] labels: project: app1 … 2. grafana面板套用 21902 模板 演示

力扣最热一百题——螺旋矩阵

目录 题目链接&#xff1a;54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;模拟 1. 边界初始化 2. 循环遍历矩阵 3. 从左到右遍历上边界 4. 从上到下遍历右边界 5. 从右到左遍历下边界 6. 从下到上遍历左边…

Axios 掌握现代 Web 开发的 HTTP 客户端

Axios: 掌握现代 Web 开发的 HTTP 客户端 在现代 Web 开发中&#xff0c;与后端进行数据交互是不可或缺的一部分。Axios 是一个流行的基于 Promise 的 HTTP 客户端&#xff0c;它提供了一种简洁、高效的方式来发送异步请求。本文将引导初学者学会使用 Axios&#xff0c;并探讨…

Requests-HTML模块怎样安装和使用?

要安装和使用Requests-HTML模块&#xff0c;您可以按照以下步骤进行操作&#xff1a; 打开命令行界面&#xff08;如Windows的命令提示符或Mac的终端&#xff09;。 使用pip命令安装Requests-HTML模块。在命令行中输入以下命令并按回车键执行&#xff1a; pip install request…

Docker与虚拟机的差异?

Docker与虚拟机的差异? 1、技术原理2、性能与资源3、部署与迁移4、应用场景💖The Begin💖点点关注,收藏不迷路💖 1、技术原理 虚拟机:在物理机上运行完整操作系统,模拟独立计算机环境。Docker:直接在宿主机操作系统上运行,共享内核,轻量级封装应用。2、性能与资源…