SuperAPI AI 工具集

spring-boot-test-patterns

测试与质量

查看项目

更新于 10-16 07:20

技能介绍

用途:为 Spring Boot 应用编写健壮测试套件提供系统化指导,涵盖单元测试、切片测试、集成测试和基于容器的测试,技术栈包括 JUnit 5、Mockito、Testcontainers 及性能优化的切片测试模式。

主要能力与测试类型:单元测试使用 @ExtendWith(MockitoExtension.class),目标耗时低于 50ms,用于无需 Spring 上下文的业务逻辑;仓库测试使用 @DataJpaTest,低于 100ms;控制器测试使用 @WebMvcTest 或 @WebFluxTest,低于 100ms;集成测试使用 @SpringBootTest,低于 500ms,配合容器运行完整应用上下文;容器测试使用 @ServiceConnection 或 @Testcontainers 接入真实数据库或消息代理。

关键注解包括 @SpringBootTest(完整上下文,谨慎使用)、@DataJpaTest(仅 JPA 组件)、@WebMvcTest(MVC 层)、@WebFluxTest(WebFlux 层)、@JsonTest(JSON 序列化组件),以及 Testcontainers 的 @ServiceConnection、@DynamicPropertySource、@Testcontainers。

必要用法:单元测试通过 @Mock 与 @InjectMocks 注入并校验交互;切片测试用 @DataJpaTest 配 @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 接入真实库;REST 接口用 MockMvc 断言状态与 jsonPath;Spring Boot 3.5+ 用 @ServiceConnection 管理容器,并通过 @Import(TestContainerConfig.class) 应用配置。依赖需引入 spring-boot-starter-test 和 org.testcontainers:junit-jupiter(示例版本 1.19.0)。CI/CD 可用 GitHub Actions,配置 JDK 17 后执行 ./mvnw test。

适用场景:服务或仓库的单元测试、通过 Testcontainers 的集成测试、REST API 层测试,以及按层组织以提升上下文缓存效率的测试套件。

限制与注意:Testcontainers 依赖 Docker,CI/CD 需提供 Docker 支持;除非必要避免 @DirtiesContext,避免混用不同 @MockBean 配置,谨慎使用 @TestPropertySource;测试不得依赖执行顺序,避免静态可变状态。文档引用了 test-dependencies.md、unit-testing.md、slice-testing.md、testcontainers-setup.md、ci-cd-configuration.md、api-reference.md、best-practices.md、workflow-patterns.md 等参考文件;完整代码示例未在此展开。