技能介绍
testing-patterns 汇总 Spring Boot 应用的测试策略,用于编写测试、补覆盖率、排查测试失败,以及选择单元、切片或集成测试。原文要求同时编写正常与异常用例。
测试层次
- 单元测试:使用 JUnit 5、Mockito、
@ExtendWith(MockitoExtension.class)、@Mock和@InjectMocks,隔离服务类的依赖,核对返回值和方法调用。 - 控制器切片:使用
@WebMvcTest与 MockMvc,检查请求序列化、创建成功的 201、输入校验失败的 400 和资源缺失的 404;失败场景还应核对服务没有被错误调用。 - 仓库切片:使用
@DataJpaTest、TestEntityManager 和 PostgreSQL Testcontainers,验证真实数据库查询、大小写处理及无匹配时的空结果。 - 集成测试:使用随机端口的
@SpringBootTest、测试配置及容器数据库,验证创建、读取、删除与删除后再次读取的完整流程。原文示例使用RestTestClient。
用例与配置
示例包括正常下单、商品不存在、空订单、非法用户名和不同角色权限。异常断言使用 assertThatThrownBy();verify(mock, never()) 用于确认不应发生的调用没有执行。参数化测试使用 @ParameterizedTest、@ValueSource 和 @CsvSource,以多组输入复用相同断言。
原文还提供 @TestConfiguration 与 @Import 复用容器配置的写法,并注明 @ServiceConnection 用于 Spring Boot 3.1 及以上版本的容器连接自动配置。测试命名采用 methodUnderTest_condition_expectedResult。
以上为公开原文的内容整理,原始代码与标识保留在来源资料中。本页未运行 Java 示例、启动数据库容器或验证特定 Spring Boot 版本的兼容性。