Spec-Kit深度体验:它真的能强制我写好测试吗?一个TDD新手的踩坑实录
第一次听说Spec-Kit时,我正在为一个简单的天气查询API焦头烂额。代码越写越乱,功能越加越多,最后连我自己都搞不清楚哪些边界条件测试过,哪些没有。同事推荐说:"试试Spec-Kit吧,它能逼着你按规矩来。"作为一个对测试驱动开发(TDD)既向往又困惑的开发者,我决定亲身尝试这个号称能"强制先生成测试用例"的工具,记录下这段从抗拒到接受的转变历程。
1. 初识Spec-Kit:当自由散漫遇上强制约束
安装过程比想象中顺利。按照官方文档,我用了以下命令初始化项目:
bash复制pip install uv
uvx --from git+https://github.com/github/spec-kit.git specify init weather-api
启动Claude Code后,我迫不及待地输入了第一个命令:
code复制/specify 开发一个天气查询API,能够根据城市名称返回当前温度、天气状况和湿度
Spec-Kit立即生成了一个详细的spec.md文件,列出了用户故事、成功标准和边界条件。但当我直接尝试写业务代码时,工具毫不留情地阻止了我:
错误:未检测到测试文件。请先完成测试用例生成步骤。
这种强制约束让我这个习惯先写代码后补测试的开发者感到不适。下表对比了我习惯的工作流与Spec-Kit强制要求的工作流:
| 传统工作流 | Spec-Kit工作流 |
|---|---|
| 直接编写业务逻辑 | 必须先定义规格文档 |
| 功能完成后补测试 | 测试用例是实现的准入条件 |
| 边界条件靠后期排查 | 边界条件在spec阶段明确定义 |
| 重构时测试可能滞后 | 任何代码变更都需要对应测试更新 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 与AI协作:从机械服从到有效对话
被迫先生成测试后,我遇到了第一个挑战:AI生成的测试用例看起来合理吗?初始生成的测试文件包含以下内容:
python复制def test_get_weather_by_city():
"""测试通过城市名称获取天气数据"""
result = get_weather("北京")
asser
