那我怎么样才能让Claude Code在写sprinboot代码的时候按照TDD for AI的方式去执行啊??
要让AI在Spring Boot项目中落地TDD开发,需通过配置文件约束、环境集成和指令诱导三管齐下。关键是在项目根目录创建claude.md文件,明确规定TDD流程:测试先行、红灯运行、最小实现、绿灯验证和重构。同时确保AI能操作终端运行测试命令,并通过精准指令引导AI按TDD步骤开发。针对Spring Boot项目,还需加入特殊校验技巧如JsonPath校验、数据库回滚和依赖模拟。这种模式下,
·
文章目录
要让 Claude Code(或类似的 AI Agent)在 Spring Boot 项目中真正落地 TDD for AI,不能只靠嘴说,必须通过 配置文件约束、 环境集成和 指令诱导三位一体来实现。
以下是具体的操作指南:
1. 核心:在项目根目录配置 claude.md
这是给 Claude 下达的“死命令”。你需要在项目根目录创建一个 claude.md(或针对 Cursor 使用 .cursorrules),写入以下针对 Spring Boot 的 TDD 规范:
# AI Programming Protocol: Test-Driven Development (TDD)
## 核心法则 (The Golden Rules)
1. **测试先行 (Test-First)**:在编写任何业务逻辑代码之前,必须先有一个失败的测试用例。
2. **最小化实现 (Minimal Implementation)**:编写生产代码时,仅以“使当前测试通过”为唯一目标。禁止过度设计或提前实现未被测试覆盖的功能。
3. **红-绿-重构循环 (Red-Green-Refactor)**:严格遵守以下迭代节奏,不得跳步。
---
## 交互工作流 (Workflow Phases)
### 第一阶段:红 (Red) - 编写失败的测试
* **AI 行为**:分析需求,编写一个或一组针对新功能的自动化测试。
* **输出内容**:仅展示测试代码(如 `*.test.js` 或 `test_*.py`)。
* **状态确认**:必须指出测试为何会失败(例如:`Function not defined` 或 `Assertion failed`)。
* **停止点**:等待用户确认测试运行并返回失败结果。
### 第二阶段:绿 (Green) - 使测试通过
* **AI 行为**:编写最简单的业务代码,让测试尽快变绿。
* **输出内容**:展示业务逻辑代码。
* **验证要求**:声明当前测试已通过,不考虑代码是否优雅。
### 第三阶段:重构 (Refactor) - 优化结构
* **AI 行为**:在保持测试通过的前提下,优化代码可读性、消除重复、改进命名。
* **输出内容**:展示重构后的优化代码。
* **参考标准**:遵循 [IBM 定义的重构标准](https://www.ibm.com/think/topics/test-driven-development),确保设计简洁。
---
## 技术规范与约束
* **自动化框架**:默认优先使用主流框架(如 JUnit, Pytest, Jest, Golang Test)。
* **依赖隔离**:对于数据库、API 或外部服务,必须使用 [Mock 机制](https://www.ibm.com/think/topics/test-driven-development#history-of-test-driven-development) 进行隔离。
* **禁止行为 (Negative Constraints)**:
* 🚫 禁止在同一个回答中同时给出“测试代码”和“业务实现”。
* 🚫 禁止一次性实现多个功能点,每次迭代只能关注一个细小的逻辑分支。
* 🚫 如果测试通过但逻辑明显有 Bug,禁止跳过,必须增加更严苛的边缘测试用例。
---
## 启动指令
当用户说“我们要开始一个新的功能”或“开始 TDD 模式”时,立即进入【第一阶段:红】。
2. 环境准备:确保 Claude 能跑命令
Claude Code 的强大之处在于它能操作你的终端。你需要确保:
- 本地环境配置好 JDK:Claude 需要调用你本地的 Java 环境。
- 使用 Wrapper 脚本:在指令中明确要求它使用
./mvnw或./gradlew,这样它不需要全局安装 Maven/Gradle 也能运行测试。
3. 实战:如何向 Claude 下达指令?
当你开始一个新功能(例如:用户注册验证)时,不要说“帮我写个用户注册逻辑”,而要这样诱导:
指令示例:
“我要实现一个用户注册的 Service。请按照claude.md中的 TDD 规范执行:
- 先在
UserServiceTest.java中写一个测试用例,验证当邮箱格式不正确时抛出IllegalArgumentException。- 运行测试并确认失败。
- 修改
UserService.java实现校验逻辑。- 循环直到测试通过。”
4. Claude Code 执行时的“自动化闭环”
当你下达上述指令后,你会看到 Claude 像真正的程序员一样操作:
- 思考 (Thought): “我需要先写测试。”
- 写测试 (Edit): 它会创建
src/test/java/com/example/UserServiceTest.java。 - 运行命令 (Run): 它会调用终端执行
./mvnw test -Dtest=UserServiceTest。 - 读取报错 (Observe): 它会看到
Compilation Error或AssertionFailedError。 - 编写代码 (Edit): 它会去创建
UserService.java并写下逻辑。 - 再次运行 (Run): 再次跑测试。
- 自修复 (Self-Correct): 如果它发现逻辑写漏了(比如忘了加
@Service注解导致注入失败),它会看到 Spring 启动报错,然后自动加上注解。
5. 针对 Spring Boot 的特殊校验技巧
为了让 AI TDD 更高效,建议在 claude.md 中增加几个“高级断言规范”:
- JsonPath 校验:如果是写 Controller,强制要求它使用
MockMvc和jsonPath校验返回字段。 - 数据库回滚:要求它在集成测试上加
@Transactional,确保 AI 跑测试不会弄脏你的本地数据库。 - 依赖模拟:明确规定“对于外部 API 调用,必须使用
@MockBean模拟结果,严禁产生真实网络请求”。
总结:你现在的角色变化
在 TDD for AI 模式下:
- 以前的你:对着屏幕看 AI 写代码,祈祷它没写错。
- 现在的你:审阅 AI 写的 Test Case 是否覆盖了所有业务场景。
只要测试用例(Requirement in Code)是完善的,Claude 生成的代码就一定是可靠的。
你现在的 Spring Boot 项目是用的 Maven 还是 Gradle?我可以根据你的构建工具给你一个更精准的 claude.md 模板。
更多推荐



所有评论(0)