当前位置: 首页 > news >正文

Spring Boot 单元测试

目录

1.什么是单元测试?

2.单元测试的优点

3.Spring Boot 单元测试使用

3.1 生成单元测试的类

3.2 添加 Spring Boot 框架测试注解:@SpringBootTest

3.3 添加单元测试业务逻辑

3.4 注解 @Transactional 

4. 断言


1.什么是单元测试?

单元测试,是指对软件中的最小可测试单元进行检查和验证的过程叫单元测试

在 Spring Boot 中,最小可测试单元是指 方法

单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的、很明确的(代码)功能是否正确

执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期

2.单元测试的优点

  1. 可以方便,快捷测试一个功能模块(方法级别)
  2. 在打包时会运行所有的单元测试,只有所有的单元测试都顺利通过之后才能正常打包,所以在这个过程中可以帮助我们发现问题,减少问题发生的概率
  3. 使用单元测试可以在不污染数据库数据的情况下,来测试某项功能

3.Spring Boot 单元测试使用

Spring Boot 项目创建时会默认单元测试框架 spring-boot-test,而这个单元测试框架主要是依靠另⼀ 个著名的测试框架 JUnit 实现的,打开 pom.xml 就可以看到,以下信息是 Spring Boot 项目创建是自动添加的:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

3.1 生成单元测试的类

 


class UserMapperTest {void getUserById() {}
}

3.2 添加 Spring Boot 框架测试注解:@SpringBootTest

package com.example.ssmdemo1.mapper;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;@SpringBootTest//表明当前单元测试是运行在Spring Boot环境中的
class UserMapperTest {@Testvoid getUserById() {}
}

3.3 添加单元测试业务逻辑

package com.example.ssmdemo1.mapper;import com.example.ssmdemo1.entity.Userinfo;
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.*;@SpringBootTest//1、表明当前单元测试是运行在Spring Boot环境中的
class UserMapperTest {//2、注入测试对象@Autowiredprivate UserMapper userMapper;@Testvoid getUserById() {//3、添加单元测试的业务代码Userinfo userinfo=userMapper.getUserById(1);System.out.println(userinfo);}
}

3.4 注解 @Transactional 

在单元测试中添加此注解,表示在方法执行完之后回滚事务,这样就不会污染数据库了

比如这个修改操作,如果不想污染数据库中的数据,就可以直接添加注解 @Transactional

@SpringBootTest// 1.表明当前单元测试是运行在Spring Boot环境中的
@Transactional // 开启一个事务,执行完恢复数据
class UserMapperTest {@Autowired// 2.注入测试对象:属性注入private UserMapper userMapper;@Test
//    @Transactionalvoid getUserById() {// 3.添加单元测试的业务代码Userinfo userinfo = userMapper.getUserById(1);System.out.println(userinfo);Assertions.assertEquals("admin",userinfo.getUsername());}
}

4. 断言

assertEquals判断两个对象或两个原始类型是否相等
assertNotEquals判断两个对象或两个原始类型是否不相等
assertSame判断两个对象引用是否指向同一个对象
assertNotSame判断两个对象引用是否指向不同的对象
assertTrue判断给定的布尔值是否为 true
assertFalse判断给定的布尔值是否为 false
assertNull判断给定的对象引用是否为 null
assertNotNull判断给定的对象引用是否不为 null

http://www.lryc.cn/news/111343.html

相关文章:

  • k8s部署nginx访问Tomcat
  • springboot配置文件的使用
  • blender 毛发粒子
  • . 在css中的应用
  • 黑马程序员SpringMVC练手项目
  • SQL注入 ❤ ~~~ 网络空间安全及计算机领域常见英语单词及短语——网络安全(二)
  • 【外卖系统】新增菜品
  • 使用docker搭建GPT服务
  • Qt项目---简单的计算器
  • Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述
  • 基于SpringBoot+Vue的地方美食分享网站设计与实现(源码+LW+部署文档等)
  • 在java中操作redis_Data
  • 嵌入式开发学习(STC51-14-时钟)
  • ES新特性部分
  • 数据结构——搜索二叉树
  • 3.3 Makefile的嵌套包含
  • 爬虫获取电影数据----以沈腾参演电影为例
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】
  • 2023年华数杯数学建模A题思路代码分析 - 隔热材料的结构优化控制研究
  • 阿里云二级域名配置
  • Webpack5 动态导入按需加载
  • 【Linux操作系统】Ubuntu和center两个Linux发行版本中指令的区别
  • c++基本数据结构
  • 路由器DHCP实验
  • Linux 电源子系统之充电、放电、低功耗
  • 捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)
  • 【基础类】—HTTP协议类
  • 【Qt高级】QThread与QTimer组合使用引出的信号槽执行在哪个线程的思考【2023.08.06】
  • 用于大型图像模型的 CNN 内核的最新内容
  • 索尼电视怎么完全关机