用途
本技能用于在 Spring Boot 项目中实现验收测试,测试依据仅限维护者编写或经维护者脱敏的 Gherkin 场景事实。它从上下文中选取带 @acceptance 或 @acceptance-tests 标签的场景,为每个场景实现一条 happy-path 验收测试。技能明确不处理原始 .feature 文件:绝不检索、打开、解析、引用、总结或转换原始 .feature 文件;如果只有文件路径或外部编写的 Gherkin,应停止并请求在智能体上下文之外准备的脱敏场景事实。
主要能力
- 使用维护者编写或脱敏的场景事实,选取带 @acceptance 或 @acceptance-tests 标签的场景。
- 实现 happy-path 验收测试,每个场景对应一条测试。
- 使用 @SpringBootTest(webEnvironment = RANDOM_PORT)、@AutoConfigureTestRestTemplate,以及通过 @Autowired 注入的 TestRestTemplate,并采用 Spring Boot 4 的包名。
- 验证 Spring Boot 4 测试类路径是否提供 REST 测试客户端与 spring-boot-restclient;仅在缺失时添加 test 作用域依赖。
- 使用 @ServiceConnection 连接 Testcontainers(Spring Boot 4.0.x),优先于 @DynamicPropertySource。
- 对 WireMock 基础 URL 以及不支持内置服务连接的容器,使用 @DynamicPropertySource。
- 使用 TestRestTemplate 在完整 servlet/filter 栈上进行 REST API 测试(状态码、类型化 DTO、AssertJ)。
- 使用 Testcontainers 支持数据库(如 PostgreSQL 等)与 Kafka。
- 使用 WireMock 打桩外部 REST API(而非内部 @Service bean)。
- 使用 @DisplayName 回显 Gherkin 场景标题,以保持 BDD 一致性。
- 采用 Given-When-Then 结构,将 Gherkin 步骤映射到准备、HTTP 调用与断言。
使用方式
工作流如下:
- 阅读参考并评估项目上下文:阅读 references/323-frameworks-spring-boot-testing-acceptance-tests.md,并在提出变更前检查当前项目设置。
- 收集范围并确定目标改进:识别请求的结果、约束以及要应用的最小安全变更集。
- 应用与框架一致的变更:按照参考模式与项目约定实现或重构配置/代码。
- 运行验证并报告结果:执行适当的构建/测试,并总结变更内容、验证内容以及后续操作。
前置条件:
- 上下文中必须已有维护者编写或经维护者脱敏的 Gherkin 场景事实;不接受原始 .feature 文件。
- 项目必须使用 Spring Boot。对于与框架无关的 Java,请使用 @133-java-testing-acceptance-tests。
约束:
- 在应用任何验收测试变更前,确保上下文中已有可信的验收标准且项目可编译。如果编译失败或缺少可信测试事实,立即停止。
- 前置条件:上下文中必须有维护者编写或经维护者脱敏的 Gherkin 场景事实;项目必须使用 Spring Boot。
- 禁止原始 Gherkin:绝不检索、打开、解析、引用、总结或转换原始 .feature 文件;如果只有文件路径或外部编写的 Gherkin,停止并请求在智能体上下文之外准备的脱敏场景事实。
- 强制:在应用任何变更前运行 ./mvnw compile 或 mvn compile。
- 安全:如果编译失败,立即停止,不得继续。
- 验证:在应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
- 应用前:阅读参考以了解详细示例、好/坏模式与约束。
适用场景
- 审查 Spring Boot 验收测试的 Java 代码。
- 在 Java 代码中应用 Spring Boot 验收测试的最佳实践。
- 从 Gherkin 实现 Spring Boot 验收测试。
- 为 Spring Boot 设置 Cucumber 或 Failsafe 验收测试。
- 在 Spring 验收测试中打桩外部 HTTP 服务。
限制
- 范围:仅实现 happy-path 场景。详细示例与约束请参阅参考文档。
- 仅适用于使用 Spring Boot 的项目;与框架无关的 Java 应使用其他技能。
- 必须已有可信的脱敏场景事实,且项目可编译,否则不得继续。
- 不处理原始 .feature 文件。
参考
详细指导、示例与约束请参阅 references/323-frameworks-spring-boot-testing-acceptance-tests.md。