关于 321-frameworks-spring-boot-testing-unit-tests
用于在 Spring Boot 项目中采用 Mockito 单元测试实践的技能,强调适用时不加载 Spring 上下文,并涵盖控制器与 JSON 切片测试、参数化测试及确定性测试配置。
主要功能
- 01基于 Mockito 的服务单元测试
- 02使用 @WebMvcTest 测试控制器
- 03使用 @JsonTest 断言 JSON
- 04参数化测试模式
- 05确定性时钟配置
- 06当前版本的 Mockito Bean 注解
适用场景
- 01不加载上下文测试 Spring 服务
- 02测试控制器请求与响应行为
- 03验证 JSON 序列化结果
- 04用参数化测试替代重复用例
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jabrena/ plinth --skill 321-frameworks-spring-boot-testing-unit-tests安装后在 Claude Code 中输入/321-frameworks-spring-boot-testing-unit-tests确认已加载。
附带文件references/321-frameworks-spring-boot-testing-unit-tests.md
详细介绍
使用 Mockito 进行 Spring Boot 单元测试
使用 Mockito 应用 Spring Boot 单元测试指南。
此技能涵盖哪些内容?
- 纯单元测试:使用 @ExtendWith(MockitoExtension.class)、@Mock、@InjectMocks 测试 @Service/@Component(不加载 Spring 上下文)
- 切片测试:使用 @WebMvcTest、@MockitoBean 测试控制器(Spring Boot 4.0.x 中已移除 @MockBean)
- 使用 @JsonTest 测试 JSON 序列化,并正确断言 JSON 值(extractingJsonPathStringValue 等)
- 参数化测试:使用 @ParameterizedTest 搭配 @CsvSource 或 @MethodSource,替代复制粘贴的方法
- 在测试中使用 Java record 作为领域对象
- 使用 @TestConfiguration、@ActiveProfiles、@Primary 固定时钟 Bean,确保测试设置具有确定性
- 现代化的模拟 API:@MockitoBean / @MockitoSpyBean;@MockBean/@SpyBean 在 Boot 4.0.x 中已弃用/移除
范围: 根据参考规则和优劣代码示例应用建议。对于集成测试,请使用 @322-frameworks-spring-boot-testing-integration-tests。
约束
应用任何测试变更之前,确保项目能够编译。如果编译失败,请立即停止。改进完成后,运行完整验证。
- 强制要求:应用任何变更之前,运行
./mvnw compile或mvn compile - 安全要求:如果编译失败,请立即停止
- 验证要求:应用改进后,运行
./mvnw clean verify或mvn clean verify - 应用变更前:阅读参考资料,了解详细规则和优劣模式
- 特殊情况:如果请求范围不明确,请停止并先询问澄清问题,再应用变更
- 特殊情况:如果缺少必需的输入、文件或工具,请说明缺少的内容,并询问是否继续提供设置指导
何时使用此技能
- 审查 Spring Boot 单元测试的 Java 代码
- 在 Java 代码中应用 Spring Boot 单元测试最佳实践
- 为 Spring Boot 服务编写 Mockito 优先的单元测试
- 避免在 Spring 单元测试中不必要地使用 @SpringBootTest
- 审查不使用 Spring 切片的 Spring Boot 单元测试设计
工作流
- 阅读参考资料并评估项目上下文
阅读 references/321-frameworks-spring-boot-testing-unit-tests.md,并检查当前项目设置,再提出变更建议。
- 明确范围并确定目标改进
识别所需结果、约束,以及需要应用的最小安全变更集。
- 应用符合框架规范的变更
按照参考模式和项目惯例实施或重构配置/代码。
- 运行验证并报告结果
执行适当的构建/测试,并总结变更内容、验证结果及后续操作。
参考资料
详细指南、示例和约束请参阅 references/321-frameworks-spring-boot-testing-unit-tests.md。
评论
支持 Markdown