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

【Spring Boot】SpringBoot 单元测试

SpringBoot 单元测试

  • 一. 什么是单元测试
  • 二. 单元测试的好处
  • 三. Spring Boot 单元测试
    • 单元测试的实现步骤

一. 什么是单元测试

单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。

二. 单元测试的好处

1、可以⾮常简单、直观、快速的测试某⼀个功能是否正确。
2、使⽤单元测试可以帮我们在打包的时候,发现⼀些问题,因为在打包之前,所以的单元测试必须通过,否则不能打包成功。
3、使⽤单元测试,在测试功能的时候,可以不污染连接的数据库,也就是可以不对数据库进⾏任何改变的情况下测试功能。(需要 @Transactional 注解)

三. Spring Boot 单元测试

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

在这里插入图片描述

单元测试的实现步骤

  1. ⽣成单元测试类

在要测试的类中右键 -> generate -> test
在这里插入图片描述

⽣成的代码:

class UserMapperTest {@Testvoid findUserByName() {}
}

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

注意: 生成的单元测试的类的位置放在 test 对应的目录下

  1. 添加单元测试代码

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

@SpringBootTest // 表明当前单元测试是在 Spring Boot 环境下的, 不加上这个注解的话, 无法注入要使用的类
class UserMapperTest {@Testvoid findUserByName() {}
}

2.添加单元测试业务逻辑


@SpringBootTest
class UserMapperTest {@Resourceprivate UserMapper userMapper;@Testvoid findUserByName() {User user = userMapper.findUserByName("zhaoliu");// 使⽤断⾔判断最终的结果是否符合预期Assertions.assertNotNull(user);}
}

如果想要不污染数据库的话可以在类上或者方法上加上 @Transactional 注解, 这样测试完会自动回滚.

	@Transactional@Testvoid findUserByName() {User user = userMapper.findUserByName("zhaoliu");// 使⽤断⾔判断最终的结果是否符合预期Assertions.assertNotNull(user);}

简单的断⾔说明:

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

好啦! 以上就是 SpringBoot 单元测试 的讲解,希望能帮到你 !
评论区欢迎指正 !

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

相关文章:

  • ansible 调研
  • QT UI控件汇总介绍
  • 【垃圾回收概述及算法】
  • 2021年03月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 为什么通过一致性正则化方法就可以避免将所有未标记数据集分配给同一类?
  • 第4章 决策树
  • 在Remix中编写你的第一份智能合约
  • 如何查看dll文件内导出函数名称
  • 学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础
  • JAVA String 和 String[][]互转的两种方法
  • 推荐几个制作svg的工具
  • Java实现防重复提交,使用自定义注解的方式
  • Springboot实现Web组件注册
  • Element组件案例 Vue路由 前端打包部署步骤
  • mysql5.7停止维护时间
  • 解密.kat6.l6st6r勒索病毒:保护数据的关键方法
  • Godot 添加信号
  • JS如何判断文字是否溢出(被ellipsis)?
  • pb:常用函数和语句清单
  • (8)SpringMVC中的视图类型及其特点,以及视图控制器view-controller的配置
  • ansible学习笔记分享
  • 以dzzoffice为例设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
  • 加拿大艾伯塔省执法部门利用OpenText Encase显着提高案件效率
  • 【Codeforces】Educational Codeforces Round 156 [Rated for Div. 2]
  • 结合swagger的前端架构小记
  • Python字典全解析:从基础到高级应用
  • Fourier变换中的能量积分及其详细证明过程
  • 保护 Web 服务器安全性
  • docker数据管理和网络通信
  • 代理IP与Socks5代理:网络工程师的神奇魔法棒