在Spring Boot中集成单元测试框架

在Spring Boot中集成单元测试框架

大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!

1. 单元测试概述

在软件开发中,单元测试是保证代码质量和功能正确性的重要手段。Spring Boot框架支持多种单元测试框架,如JUnit和Mockito,通过这些框架,开发者可以编写自动化的测试用例来验证应用程序的各个组件和功能是否按预期工作。

2. 集成JUnit 5

JUnit 5是Java最流行的单元测试框架之一,支持Spring Boot项目的单元测试。下面我们来看一下如何在Spring Boot项目中集成JUnit 5,并编写简单的测试用例。

2.1. 添加依赖

首先,在pom.xml文件中添加JUnit 5的依赖:

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.1</version><scope>test</scope>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.8.1</version><scope>test</scope>
</dependency>
2.2. 编写测试类

编写一个简单的JUnit 5测试类,测试Spring Boot应用程序的基本行为:

package cn.juwatech.testing;import cn.juwatech.Application;
import cn.juwatech.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;@SpringBootTest(classes = Application.class)
public class UserServiceTest {@Autowiredprivate UserService userService;@Testpublic void testUserService() {assertNotNull(userService);// 测试UserService的方法String username = userService.getUsernameById(1L);assertEquals("Alice", username);}
}
2.3. 运行测试

通过JUnit 5的@Test注解标记测试方法,并使用@SpringBootTest注解加载Spring Boot应用程序的上下文。运行测试类时,JUnit将自动初始化Spring应用程序上下文,并执行测试方法。

3. 使用Mockito进行单元测试

除了JUnit 5,Mockito是一个流行的Java mocking框架,用于编写单元测试时模拟依赖的行为。下面是一个使用Mockito的示例:

3.1. 添加Mockito依赖

pom.xml中添加Mockito依赖:

<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>4.2.0</version><scope>test</scope>
</dependency>
3.2. 编写Mockito测试
package cn.juwatech.testing;import cn.juwatech.service.UserService;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;@ExtendWith(MockitoExtension.class)
public class UserServiceMockitoTest {@Mockprivate UserService userService;@InjectMocksprivate UserController userController;@Testpublic void testUserController() {// 模拟UserService的行为when(userService.getUsernameById(1L)).thenReturn("Bob");// 测试UserController的方法String username = userController.getUsername(1L);assertEquals("Bob", username);}
}

4. 总结

本文介绍了如何在Spring Boot项目中集成JUnit 5和Mockito这两个常用的单元测试框架。通过示例代码,展示了如何编写基本的单元测试用例,以及如何使用Mockito来模拟依赖的行为,帮助开发者提高代码质量和可靠性。

微赚淘客系统3.0小编出品,必属精品,转载请注明出处!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis相关知识记录

redis基本数据类型 Redis⽀持五种主要数据结构&#xff1a;字符串&#xff08;Strings&#xff09;、列表&#xff08;Lists&#xff09;、哈希表&#xff08;Hashes&#xff09;、集合&#xff08;Sets&#xff09;和有序集合&#xff08;Sorted Sets&#xff09;。这些数据结…

python为什么慢?(自用)

《Cython系列》1. Cython 是什么&#xff1f;为什么要有 Cython&#xff1f;为什么我们要用 Cython&#xff1f; - 古明地盆 - 博客园 (cnblogs.com) 古明地盆的主页 - 博客园 (cnblogs.com) 我原本认为&#xff0c;python慢的原因是“逐行解释程序并执行”&#xff0c;那么我…

winform4

json using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //导入json第三方库 使用nuget搜索 …

断电的固态硬盘数据能放多久?

近日收到一个网友的提问&#xff0c;在这里粗浅表达一下见解&#xff1a; “网传固态硬盘断电后数据只能放一年&#xff0c;一年之后就会损坏。但是我有一个固态硬盘已经放了五六年了&#xff08;上次通电还是在2018年左右&#xff0c;我读初中的时候&#xff09;&#xff0c;…

《长相思》第二季回归:好剧质量,永恒的王牌

在万千剧迷的翘首以盼中&#xff0c;《长相思》第二季终于携着前作的辉煌与期待&#xff0c;缓缓拉开了序幕。这部自播出以来便以其精湛的剧情、出色的演员阵容以及独到的宣传策略&#xff0c;赢得了广泛好评与持续关注。如今&#xff0c;第二季的回归&#xff0c;无疑再次证明…

Linux 初识

目录 ​编辑 1.Linux发展史 1.1UNIX发展历史 1.2Linux发展历史 2.Linux的开源属性 2.1 开源软件的定义 2.2 Linux的开源许可证 2.3 开源社区与协作 3.Linux的企业应用现状 3.1 服务器 3.1.1 Web服务器 3.1.2 数据库服务器 3.1.3 文件服务器 3.1.4 电子邮件服务器 …

某客户管理系统Oracle RAC节点异常重启问题详细分析记录

一、故障概述 某日10:58分左右客户管理系统数据库节点1所有实例异常重启&#xff0c;重启后业务恢复正常。经过分析发现&#xff0c;此次实例异常重启的是数据库节点1。 二、故障原因分析 1、数据库日志分析 从节点1的数据库日志来看&#xff0c;10:58:49的时候数据库进程开始…

新火种AI|微软和苹果放弃OpenAI董事会观察员席位

作者&#xff1a;一号 编辑&#xff1a;美美 微软苹果双双不做OpenAI“观察员”&#xff0c;OpenAI能更自由吗&#xff1f; 7月10消息&#xff0c;微软当地时间周一宣布将放弃在OpenAI董事会的观察员席位&#xff0c;他们称&#xff0c;OpenAI在过去八个月中取得了“重大进展…

代码随想录算法训练营第三十一天 |1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

国内的几款强大的智能—AI语言模型

AI 绘图 链接&#xff1a;点我进入 1、国内百度研发的&#xff0c;文心一言&#xff1a; https://yiyan.baidu.com/welcome 大家如果像我的界面一样有【开始体验】就是可以使用的&#xff0c;否则就是说明在等待中&#xff01; 优点&#xff1a;会画画&#xff0c;暂无次数限…

C++各种类型转换

string转为float #include <iostream> #include <string>int main() {std::string str "3.14";float num std::stof(str);std::cout << num << std::endl;return 0; } int转string to_string&#xff08;C11&#xff09; #include <…

python程序打包.exe文件

python程序打包.exe文件 1. cxfreeze# 1.1 安装cxfreeze1.2 创建setup.py文件1.3 生成.exe 当我们开发完一个深度学习程序时&#xff0c;往往在另一台电脑上运行代码&#xff0c;还得继续安装深度学习环境这些依赖&#xff0c;但是将整个代码程序打包成.exe文件就会同时将程序所…

nginx 中no live upstreams while connecting to upstream错误的解决

将netcore的站点服务器从IIS切换到linux的nginx站点之后&#xff0c;站点错误日志里一直报下面这样一个错误&#xff1a; 2024/07/11 10:17:19 [error] 477#0: *70 no live upstreams while connecting to upstream, client: 120.78.72.223, server: tahm.域名.com, request: …

回归树模型

目录 一、回归树模型vs决策树模型&#xff1a;二、回归树模型的叶结点&#xff1a;三、如何决定每个非叶结点上的特征类型&#xff1a; 本文只介绍回归树模型与决策树模型的区别。如需了解完整的理论&#xff0c;请看链接&#xff1a;决策树模型笔记 一、回归树模型vs决策树模…

Java中的多线程是如何实现的?

Java中的多线程实现主要通过以下几种方式&#xff1a; 1. 继承Thread类 这是实现多线程的一种基本方式。你需要创建一个类来继承java.lang.Thread类&#xff0c;然后重写其run()方法。run()方法包含了线程执行的任务代码。创建该类的实例后&#xff0c;通过调用该实例的start…

c++ learn five five day

1.A-B数对 二分法 http://t.csdnimg.cn/2GNeH 将A-BC转化成ABC&#xff0c;然后遍历数组&#xff0c;让数组的每个元素加C&#xff0c;再查找原数组中是否存在对应数组元素C之后的值。&#xff08;数据量比较大&#xff0c;所以我们就用二分在查找过程中提高效率&#xff0c…

Linux设备驱动的并发控制

一、概述 Linux设备驱动中必须解决的一个问题就是多个进程对共享资源(如全局变量、静态变量、硬件资源等)的并发访问&#xff0c;会导致竟态&#xff0c;如可能会出现以下情况&#xff1a;导致执行单元C独处的数据不符合预期 导致竟态发生有如下几种情况&#xff1a; 对称多处…

int类型变量表示范围的计算原理

文章目录 1. 了解2. 为什么通常情况下int类型整数的取值范围是-2147483648 ~ 21474836473. int类型究竟占几个字节4. 推荐 1. 了解 通常情况下int类型变量占4个字节&#xff0c;1个字节有8位&#xff0c;每位都有0和1两种状态&#xff0c;所以int类型变量一共可以表示 2^32 种状…

date 命令学习

文章目录 date 命令学习1. 命令简介2. 语法参数2.1 使用语法2.2 说明2.3 参数说明 3. 使用案例:arrow_right: 星期名缩写 %a:arrow_right: 星期名全写 %A:arrow_right: 月名缩写 %b:arrow_right: 月名全称 %B:arrow_right: 日期和时间 %c:arrow_right: 世纪 %C:arrow_right: 按…

从零开始学习嵌入式---- C高级编译工具

走进编译工具箱&#xff1a;GCC、GDB 和 Make 你是否曾对程序员如何将一行行代码变成可以运行的软件感到好奇&#xff1f;答案就藏在编译工具箱里&#xff01;今天&#xff0c;我们将揭开三个重要工具的神秘面纱&#xff1a;GCC、GDB 和 Make&#xff0c;它们是程序员的左膀右臂…