SuperAPI AI 工具集

spring-boot-testing

测试与质量

查看项目

更新于 10-26 16:18

技能介绍

用途

该技能面向 Spring Boot 应用测试场景,适合需要为 Spring Boot 项目编写测试、选择合适测试切片、搭建测试基础设施、使用 MockMvc、TestRestTemplate 或 RestTestClient、以及借助 Testcontainers 编写集成测试的开发者。

主要能力

技能强调四条核心原则:测试金字塔(单元测试快、切片测试聚焦、集成测试完整);使用能提供足够信心的最窄测试切片;优先使用 AssertJ 风格的流式可读断言;优先采用 MockMvcTester、RestTestClient 等现代 API。

测试切片选择指引:控制器与 HTTP 语义用 @WebMvcTest;仓库与 JPA 查询用 @DataJpaTest;REST 客户端与外部 API 用 @RestClientTest;JSON 序列化与反序列化用 @JsonTest;完整应用用 @SpringBootTest。

技能附带多份参考文档:测试切片总览与决策矩阵、WebMvc 测试、DataJpa 测试(含 Testcontainers)、REST 客户端测试;MockMvcTester(3.2+)、传统 MockMvc(3.2 之前)、RestTestClient(Spring Boot 4+)、MockitoBean 依赖模拟;AssertJ 基础与集合断言;Testcontainers JDBC(PostgreSQL、MySQL 等);Instancio 生成复杂测试对象;上下文缓存加速与 Spring Boot 4.0 迁移说明。

使用方式

技能提供测试运行命令,例如 mvn test、mvn test -Dtest=OrderControllerTest、mvn test -Dgroups=fast、gradle test、gradle test --tests OrderControllerTest、mvn verify -P integration-test。同时给出决策树:测试控制器端点时使用 @WebMvcTest 配合 MockMvcTester;测试仓库查询使用 @DataJpaTest 配合 Testcontainers 连接真实数据库;测试服务业务逻辑使用纯 JUnit + Mockito(不加载 Spring 上下文);测试外部 API 客户端使用 @RestClientTest 配合 MockRestServiceServer;测试 JSON 映射使用 @JsonTest;需要完整集成测试时使用 @SpringBootTest 并最小化上下文配置。

Spring Boot 4 相关要点包括:RestTestClient 作为 TestRestTemplate 的现代替代;@MockitoBean 取代已弃用的 @MockBean;MockMvcTester 提供 AssertJ 风格 Web 断言;模块化测试 starter;上下文暂停(Spring Framework 7)。

实践建议

技能建议:方法或类过于复杂时(单方法需超过 5-7 个测试用例覆盖)先分析复杂度并建议重构,由用户决定是否重构;为常用对象与 mock 设置编写辅助方法以减少冗余;使用 @DisplayName 描述测试意图;测试按主场景、其他有效路径、异常与错误条件的顺序组织;以真实生产场景编写测试;覆盖率目标为 80%,使用 JaCoCo Maven 插件跟踪,优先覆盖业务关键路径、复杂算法、错误处理、集成点。

依赖与限制

技能列出 Spring Boot 4 下的测试依赖坐标:spring-boot-starter-test、spring-boot-starter-webmvc-test、spring-boot-testcontainers,均为 test 作用域。技能还提及可通过 Context7 查询 JUnit 5、AssertJ、Mockito、Spring Boot 测试的最新文档。该技能要求使用具体的参考文档与命令运行测试,未提供其他平台、收费或效果方面的信息。