无论您是构建 REST API、服务层逻辑还是数据访问层,Spring Boot 都为 JUnit 提供一流的支持,并提供方便的注解和实用程序来编写干净、可维护的测试。
1. 必需的依赖
Spring Boot 默认使用 JUnit Jupiter (JUnit 5/6 平台)。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
testImplementation 'org.springframework.boot:spring-boot-starter-test'
此单个依赖项包括
- JUnit Jupiter
- Spring Test
- Spring Boot Test
- Mockito
- AssertJ
- JSONAssert
- Hamcrest
2. 重写 JUnit 版本
Spring Boot 提供自动支持来管理项目中使用的 JUnit 版本。 如果您的构建依赖于 Spring Boot 的依赖项管理支持,则不应将 JUnit 的 物料清单 (BOM) 导入到您的构建脚本中,因为这会导致 JUnit 依赖项重复(并且可能存在冲突)。
如果您需要重写 Spring Boot 应用程序中使用的依赖项的版本,则必须重写 Spring Boot 插件使用的 BOM 中定义的精确的 版本 属性。
<properties>
<junit-jupiter.version>6.0.0</junit-jupiter.version>
</properties>
ext['junit-jupiter.version'] = '6.0.0'
3. 标准 Spring Boot 测试文件夹结构
Spring Boot 自动遵循以下文件夹结构,因为
- Maven/Gradle 约定将测试类放在
src/test/java下 - JUnit 在测试阶段扫描此文件夹
- Spring Boot 在
src/test/resources下查找application-test.properties
project-root/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/demo/...
│ │ └── resources/
│ │ └── application.properties
│ └── test/
│ ├── java/
│ │ └── com/example/demo/...
│ └── resources/
│ └── application-test.properties
├── pom.xml or build.gradle
4. 结论
JUnit 和 Spring Boot Test 提供了一个健壮且可扩展的测试生态系统。 几乎无需设置,您就可以获得
- 完整的应用程序上下文支持
- 快速、隔离的切片 (Web、JPA、MVC)
- 开箱即用的模拟
- 简洁、表达力强的测试风格
无论您是测试单个服务、复杂的 REST API 还是 JPA 仓库,Spring Boot 与 JUnit 的集成都能确保您的测试保持简单、可预测且可维护。
祝您学习愉快!
评论