← ClaudeAtlas

java-integration-testlisted

Java/Spring Boot 集成测试 / 冒烟测试 / API 级 E2E 助手——在编写、评审、补全 集成测试时使用本技能,无论用户是否提到具体框架(集成测试 / 接口测试 / E2E / 冒烟测试 / @SpringBootTest / MockMvc / REST Assured / Testcontainers / WireMock)。 核心:消灭仿真测试——用可断言、可重复、可版本控制的测试替代 curl 调接口 + 肉眼判断;需要真实数据库 / Redis / Kafka 时默认 Testcontainers(不取决于项目 是否已引 H2)。覆盖:跨层协作(Controller→Service→Repository)、真实依赖容器、 进程内 HTTP 断言、外部依赖 stub、测试隔离、Actuator 冒烟。 次级触发信号:用 curl 或手动启动应用调接口"测试"、@SpringBootTest 全量上下文 测单层 Controller、测试间��据互相污染、@Transactional 回滚失效、测试基础设施 待搭建(生产 PostgreSQL / MySQL / Redis)、测试用 H2 替代生产数据库、外部 API 真调、"返回 200 就是通过了"、跑测试太慢(反复全量 / 全文读输出)。 边界:纯单测(@Mock + @InjectMocks,毫秒级,不起容器)→ java-unit-test; 前端 E2E(Selenium / Playwright)/ 性能 / 安全 → 不适用。
BaixuanZhu/skills · ★ 0 · Testing & QA · score 78
Install: claude install-skill BaixuanZhu/skills
# Java 集成测试 面向 Java/Spring Boot 的**集成测试 / 冒烟测试 / API 级 E2E** 助手。本技能提供从切片测试到全量集成的完整工具链,每条规则含「✗ 错误做法 → ✓ 正确做法」——核心是消灭 curl 仿真测试(无断言 / 不可重复 / 不��版本控制,详见铁律 1 + `references/01`)。 ## 三条铁律 1. **curl 不是测试**:测试必须有结构化断言(HTTP status + response body + jsonPath),而非"看起来返回正常"。curl 是调试工具,不是测试工具——它没有断言、不可重复、不进版本控制、无隔离。 2. **选对层次**:切片测试(`@WebMvcTest`/`@DataJpaTest`)秒级启动,够用就不用全量 `@SpringBootTest`。单层逻辑用 `@Mock`+`@InjectMocks`(→ java-unit-test),跨层协作用集成测试——不越界、不滥用全量上下文。 3. **隔离优先**:测试间数据不污染。`@Transactional` 回滚(注意失效场景)、Testcontainers 重置、`@Sql` 清理——一个测试的副作用不能影响另一个。 ## 快速入门 | 你想做的 | 看这份 | 读多少 | |---|---|---| | 不知道用哪种测试 / curl 该不该用 | `references/01` 测试层次 + curl 反模式 | 各前 40 行 | | 写 @SpringBootTest / MockMvc / WebTestClient | `references/02` | 通读 | | 只测单层 Controller 或 Repository(切片) | `references/03` | 通读 | | 用真实数据库 / Redis / Kafka 测 | `references/04` | 通读 | | 写 API 断言(REST Assured given/when/then) | `references/05` | 通读 | | 测试隔离 / @Transactional 失效 / WireMock | `references/06` | 通读 | | 冒烟测试 / 多接口串联 E2E | `references/07` | 通读 | | 跑测试烧 token / 反复全量 / 输出太多 | `references/08` | 通读 | > `01` 根文件(选层次前必读);`02`-`05` 工具链落地;`06` 隔离陷阱;`07` 冒烟与 E2E;`08` 执行效率。 ## 第 0 步:探测项目与场景(激活时先执行) 读项目 `pom.xml` / `build.gradle` 和测试代码,一次性判断: 1. **工具栈**: - Spring Boot 版本(`pom.xml` 读 `spring-boot-starter-parent`)→ 决定 `@ServiceConnection` 可用性(3.1+)、命名空间(`javax.*` vs `jakarta.*`)、HTTP 测试客户端选型(≤3.x:TestRestTemplate 可用;4.x:TestRestTemplate 废弃,用 RestTestClient——依赖坐标与迁移见 `references/02`)。 - 是否已有 `testcontainers` 依赖(`grep te