关于 322-frameworks-spring-boot-testing-integration-tests
面向 Java 项目的技能,提供 Spring Boot 4.0.x 集成测试实践,涵盖测试范围、容器服务、HTTP 与持久层测试,并要求变更前编译、之后完整验证。
主要功能
- 01使用 Testcontainers 与 @ServiceConnection
- 02以 @DynamicPropertySource 作为备用方案
- 03使用 MockMvcTester 和 TestRestTemplate 测试 HTTP
- 04使用 @DataJdbcTest 或 @DataJpaTest 持久层切片
- 05测试数据隔离与资源生命周期指导
适用场景
- 01使用 Testcontainers 编写 @SpringBootTest 测试
- 02测试 HTTP 端点或完整 HTTP 堆栈
- 03使用精简的 Spring 切片测试持久层
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jabrena/ plinth --skill 322-frameworks-spring-boot-testing-integration-tests安装后在 Claude Code 中输入/322-frameworks-spring-boot-testing-integration-tests确认已加载。
附带文件references/322-frameworks-spring-boot-testing-integration-tests.md
详细介绍
Spring Boot 集成测试
应用适用于 Spring Boot 4.0.x 的集成测试指南。
此技能涵盖哪些内容?
- 集成测试的范围和目的(验证接线和契约,而非重复单元测试)
- 使用 Testcontainers 和 @ServiceConnection 实现零配置接线(首选)
- 对于不支持内置服务连接的容器,使用 @DynamicPropertySource 作为备用方案
- 在测试方法之间共享静态 @Container 实例,以提升性能
- 使用 MockMvcTester 进行基于 AssertJ 的流畅 HTTP 断言(Spring Boot 4.0.x)
- 使用 TestRestTemplate 测试完整的 HTTP 堆栈
- 使用 @DataJdbcTest / @DataJpaTest 持久化切片(仅加载持久化层,启动更快)
- 数据隔离:每个测试拥有自己的场景;不共享可变状态,也不依赖执行顺序
- 使用 @MockitoBean 注册模拟对象(Spring Boot 4.0.x — 已移除 @MockBean)
- 资源生命周期:使用 Testcontainers JUnit 集成进行清理;分离 *IT / 集成测试
范围: 根据参考规则和优劣代码示例应用建议。
约束
应用任何集成测试更改前,确保项目可以编译。如果编译失败,立即停止。应用改进后,运行完整验证。
- 强制要求:应用任何更改前,运行
./mvnw compile或mvn compile - 安全要求:如果编译失败,立即停止
- 验证要求:应用改进后,运行
./mvnw clean verify或mvn clean verify - 应用前:阅读参考资料,了解详细规则和优劣模式
- 边缘情况:如果请求范围不明确,停止并在应用更改前提出澄清问题
- 边缘情况:如果缺少必要的输入、文件或工具,说明缺少的内容,并询问是否继续提供设置指导
何时使用此技能
- 审查 Spring Boot 集成测试的 Java 代码
- 在 Java 代码中应用 Spring Boot 集成测试最佳实践
- 编写使用 Testcontainers 的 @SpringBootTest 集成测试
- 为 Spring 集成测试配置动态属性
- 审查 Spring Boot 集成测试配置文件
工作流
- 阅读参考资料并评估项目上下文
阅读 references/322-frameworks-spring-boot-testing-integration-tests.md,并检查当前项目设置,然后再提出更改建议。
- 明确范围并确定改进目标
确定请求的结果、约束,以及要应用的最小安全更改集。
- 应用符合框架规范的更改
按照参考模式和项目约定,实现或重构配置/代码。
- 运行验证并报告结果
执行适当的构建/测试,并总结所做的更改、已验证的内容以及任何后续操作。
参考资料
详细指南、示例和约束,请参阅 references/322-frameworks-spring-boot-testing-integration-tests.md。
评论
支持 Markdown