Spring Boot单元测试
创始人
2025-01-11 04:07:16
0次

前言🍭

❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

Spring Boot 中进行单元测试是一个常见的做法,可以帮助你验证应用程序的各个组件是否按预期工作。所以我们有必要去学习一番!

一、什么是单元测试?🍭

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证的过程就叫单元测试。单元测试是开发者编写的一小段代码,用于检验被测代码的⼀个很小的、很明确的(代码)功能是否正确。执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期。如果测试结果符合我们的预期,称之为测试通过,否则就是测试未通过(或者叫测试失败)。

二、单元测试有哪些好处?🍭

  1. 方便、快捷测试一个功能模块(方法级别)
  2. 在打包时会运行所以的单元测试,只有所有的单元测试都通过之后才能正常的打包,所以在这个过程中可以帮我们发现一些问题,减少问题的概率。
  3. 使用单元测试可以在不污染数据库数据的情况下,来测试某个功能的正确性。(添加@Transactional注解即可)MyBatis查询数据库(2)_冷兮雪的博客-CSDN博客

三、Spring Boot 单元测试使用🍭

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

             org.springframework.boot             spring-boot-starter-test             test 

而 spring-boot-starter-test 的 MANIFEST.MF(Manifest 文件是用来定义扩展或档案打包的相关信息的)里面有具体的说明,如下信息所示:

四、单元测试的实现步骤🍭

1.生成单元测试类🍉

在需要进行单元测试的类里面右键:

 UserMapperTest生成在text目录下:

package com.example.ssmdemo1.mapper;  import org.junit.jupiter.api.Test;  import static org.junit.jupiter.api.Assertions.*;  class UserMapperTest {      @Test     void getUserById() {     } }

这个时候,此方法是不能调用到任何单元测试的方法的,此类只生成了单元测试的框架类,具体的业务代码要自己填充。

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 {      @Test     void getUserById() {     } }

Ⅱ、添加单元测试业务逻辑🍓

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、注入测试对象     @Autowired     private UserMapper userMapper;      @Test     void getUserById() {         //3、添加单元测试的业务代码         Userinfo userinfo=userMapper.getUserById(1);         System.out.println(userinfo);     } }

启动测试项目:

我们进行单元测试, 后面需要去运行我们的项目,我们一定要将右上角重新切换过来:

五、简单的断言说明🍭

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

断言:如果断言失败,则后面的代码都不会执行。

package com.example.ssmdemo1.mapper;  import com.example.ssmdemo1.entity.Userinfo; import org.junit.jupiter.api.Assertions; 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、注入测试对象     @Autowired     private UserMapper userMapper;      @Test     void getUserById() {         //3、添加单元测试的业务代码         Userinfo userinfo=userMapper.getUserById(1);         System.out.println(userinfo);         //判断1是否等于2 简单断言         Assertions.assertEquals(1,2);     } }

 单元测试失败:

单元测试失败,这时候我们去打包也会打包失败:

 打包失败:

 打包成功:

相关内容

热门资讯

玩家必看教程!透视挂!新久情a... 玩家必看教程!透视挂!新久情ai智能透视挂神器app,新久情外卦神器软件妙招(有辅助挂解惑);新久情...
攻略讲解开挂!千众部落ai智能... 您好,千众部落这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在这款游戏...
玩家必备科技!辅助挂!牛欢喜a... 玩家必备科技!辅助挂!牛欢喜ai智能辅助挂插件app,牛欢喜确实真的有挂手筋(有辅助挂方式)是一款可...
教你攻略辅助器!星远互娱3ai... 教你攻略辅助器!星远互娱3ai智能辅助器软件app,星远互娱3破解软件要领(有辅助挂解惑);星远互娱...
一起来探讨开挂!闲玩娱乐葫芦鱼... 一起来探讨开挂!闲玩娱乐葫芦鱼ai智能开挂助手app,闲玩娱乐葫芦鱼到底有挂吗指南(有辅助挂助手);...
切实教程透视挂!新河马互娱ai... 您好:新河马互娱这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好...
新版2025教程辅助挂!新漫游... 新版2025教程辅助挂!新漫游ai智能辅助挂平台app,新漫游有挂么辅助窍要(有辅助挂详细);1、新...
分享一款辅助!火爆欢盈娱乐ai... 分享一款辅助!火爆欢盈娱乐ai智能辅助软件app,火爆欢盈娱乐到底有挂吗法门(有辅助挂助手);亲,有...
让我来分享经验透视挂!红桃互娱... 让我来分享经验透视挂!红桃互娱ai智能透视挂脚本app,红桃互娱透视辅助课程(有辅助挂规律);红桃互...
玩家必备科普辅助!超稳互娱ai... 玩家必备科普辅助!超稳互娱ai智能辅助脚本app,超稳互娱透视挂软件法子(有辅助挂工具);1、点击下...