1、什么是单元测试?
单元测试(Unit Testing)是一种软件测试方法,用于验证和确认代码中的各个单元(通常是函数、方法或类)是否按照预期工作。单元测试旨在检测代码中的小部分,以确保其功能的正确性。
2、单元测试有哪些好处?
- 在单元测试中使用模拟对象来替代实际的数据库访问操作,不会实际修改数据库中的数据。
- 单元测试可以验证代码中的每个单元(通常是函数、方法或类)是否按照预期工作,有助于快速定位和修复问题。
- 单元测试是持续集成的关键组成部分,可以在每次代码提交或构建时自动运行,以确保新代码未引入问题。
注意:
在构建项目时,会自动运行所有的单元测试,如果测试失败,构建过程将停止,以确保不发布有问题的代码。
3、单元测试的实现步骤
3.1 引入依赖
创建Spring Boot 项目时会默认单元测试框架 spring-boot-starter-test,这个单元测试框架基于测试框架 JUnit 实现。
代码语言:javascript复制<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3.2 生成单元测试类
在需要进行单元测试的类里面右键:Generate
注意:
生成的单元测试文件在test目录下。
3.3 添加元测试代码
3.3.1 添加 Spring Boot 框架测试注解:@SpringBootTest
代码语言:javascript复制@SpringBootTest // @SpringBootTest 表明当前单元测试是运行在Spring Boot环境中的
class SysUserMapperTest {
@Test
void selectUserList() {
}
}
3.3.2 添加单元测试业务逻辑
添加需要测试的业务逻辑;
这里根据自己的项目需求进行某个模块下的单元测试,故截图省略;
3.3.2 测试业务
然后,鼠标右键运行该测试。
注意:
进行单元测试后, 再去运行项目,需要切换过来。
3.4 常见报错
代码语言:javascript复制java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
报错原因:
测试类和Spring Boot启动类不在一个目录下。
报错原因:
方法一:将启动类和测试类放在同一个包下即可。
方法二:给测试类的注解加上@SpringBootTest(classes = {启动类类名.class})
3.5 多模块下的单元测试
在springboot单模块项目很好实现单元测试,只要生成测试类即可进行测试。但在多模块项目中进行单元测试稍微复杂。比如多模块项目中有些模块没有启动类,如果对该模块进行测试,则需要创建启动类,并进行相关配置。
在多模块下如何进行单元测试,将在下篇文章中呈现。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!