前言
单元测试(unit testing),是指对项目中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试,对于Java来说或者是在SpringBoot项目中,最小的可测试单元就是一个方法。做单元测试就是为了证明某段代码的执⾏结果是否符合我们的预期。
那么单元测试有哪些好处呢?
1、可以⾮常简单、直观、快速的测试某⼀个功能是否正确。
2、使⽤单元测试可以帮我们在打包的时候,发现⼀些问题,因为在打包之前,所以的单元测试必须通过,否则不能打包成功。
3、使⽤单元测试,在测试功能的时候,可以不污染连接的数据库,也就是可以不对数据库进⾏任何改变的情况下,测试功能。
那怎么来做单元测试呢?
Spring Boot 项⽬创建时会默认单元测试框架 spring-boot-test,⽽这个单元测试框架主要是依靠另⼀个著名的测试框架 JUnit 实现的,打开 pom.xml 就可以看到,以下信息是 Spring Boot 项⽬创建是⾃动添加的:
![](https://img-blog.csdnimg.cn/img_convert/b9178f96b70748b085f9fca6ebec508e.png)
单元测试的实现步骤:
1.在要做测试的类中,右击,选择generate
![](https://img-blog.csdnimg.cn/img_convert/acbaba2e4106465a84c2944fb4467a38.png)
2.选择test
![](https://img-blog.csdnimg.cn/img_convert/5ac8d0fa953a4f3a98c76cc1f96900ce.png)
3.选择要测试的方法
![](https://img-blog.csdnimg.cn/img_convert/811c80efdb414f4fa33227cc50754374.png)
4.最终生成的测试代码
![](https://img-blog.csdnimg.cn/img_convert/823ef12619f44d7182fa5e85cf9950fd.png)
5.这个时候,此⽅法是不能调⽤到任何单元测试的⽅法的,此类只⽣成了单元测试的框架类,具体的业务代码要⾃⼰填充。添加 Spring Boot 框架测试注解:@SpringBootTest
![](https://img-blog.csdnimg.cn/img_convert/13758ed667ef4dedb7dc67f1b9c19d16.png)
6.添加单元测试业务逻辑
![](https://img-blog.csdnimg.cn/img_convert/bc19a6a1c77a4c388820a1beb4c0f541.png)
7.如果要测试插入、删除、新增数据到数据库的时候,想要不污染数据库,即不改动数据库里面的数据完成测试的话,可以在测试方法上添加注解@Transactional ,比如我需要做修改测试:
![](https://img-blog.csdnimg.cn/img_convert/b24df47dca024812ba6d06084fd9ec10.png)
8.关于断言的说明(Assertions)
方法 | 说明 |
assertEquals | 判断两个对象或两个原始类型是否相等 |
assertNotEquals | 判断两个对象或两个原始类型是否不相等 |
assertSame | 判断两个对象引用是否指向同一个对象 |
assertNotSame | 判断两个对象引用是否指向不同的对象 |
assertTrue | 判断给定的布尔值是否为true |
assertFalse | 判断给定的布尔值是否为 false |
assertNull | 判断给定的对象引用是否为null |
assertNotNull | 判断给定的对象引用是否不为null |
如果断⾔失败,则后⾯的代码都不会执⾏。
9.开始测试
![](https://img-blog.csdnimg.cn/img_convert/c1e5744fd2a448598471b069266c3fcd.png)
![](https://img-blog.csdnimg.cn/img_convert/f69a7daaff68488b92164c6cde359775.png)