tdd 是一个测试驱动开发指导技能,面向希望以测试先行的方式开发功能、学习 TDD 实践或搭建测试基础设施的请求。它把 TDD 组织为红-绿-重构循环,并给出每阶段的纪律要求。
用途 按红-绿-重构循环引导测试先行开发。适用于“Use TDD for…”“Write tests first…”“red-green-refactor”等请求,也用于开发新功能、学习 TDD、搭建测试基础设施和进行测试设计与组织。
主要能力 核心工作流为 RED→GREEN→REFACTOR→REPEAT:RED 阶段确定下一个小的行为,编写指定该行为的测试,运行并确认其因正确原因失败;GREEN 阶段编写最简单、最少的代码让测试通过;REFACTOR 阶段在测试保持通过的前提下消除重复、改进命名与结构,每步改动后运行测试;之后提交并进入下一个行为。 技能强调若干纪律规则:始终先写测试、见到失败再实现;实现保持最小、不过度设计、只做一个测试;只在测试全绿时重构;在写测试后、写实现后、每次重构后和提交前频繁运行测试。 测试结构上推荐 Arrange-Act-Assert(准备、执行、断言)和 Given-When-Then(BDD 风格)。测试设计原则包括:测试公共接口行为、边界情况、错误条件、业务逻辑与集成点;不测私有实现细节、第三方库、无逻辑的简单 getter/setter 和框架代码;每个测试验证单一行为;命名具描述性;测试相互独立、无共享可变状态。 文档还介绍了单元测试、集成测试、端到端测试的定位与测试金字塔(大量快速单元测试、适量集成测试、少量端到端测试),mock 与测试替身(mock、stub、fake、spy)的使用时机,常见 TDD 反模式,测试命名模式(如 test_<function><scenario><expected_result>、should_<expected_behavior>when<condition>)与目录组织,带测试的安全重构流程及重构导致测试失败时的处理,以及行/分支/函数覆盖率的含义与目标(建议 80% 以上但非 100%)。 文档含一个阶乘函数的三轮迭代示例,演示基例、正数计算、负数报错的逐步测试先行实现。
使用方式 资料未给出该技能的安装命令或调用方式,暂未提供。文档说明技能附带以下资源:references/python-tdd.md(pytest、unittest、fixtures、参数化测试、unittest.mock、异步测试、pytest-cov、测试组织)、references/elisp-tdd.md(ERT、交互函数测试、缓冲区操作测试、cl-letf mock、Buttercup、Emacs 与批处理模式运行测试)、references/general-tdd.md(通用 TDD 原则)、references/test-design-patterns.md、references/refactoring-with-tests.md,以及 scripts/test_template_generator.py(生成测试文件样板)、scripts/coverage_analyzer.py(分析覆盖率报告)和 assets/templates/(多语言测试文件模板)。
适用场景 适合需要以测试先行方式开发新功能、学习并练习红-绿-重构节奏、为项目搭建测试结构与规范、进行测试设计评审或安全重构的开发者;对 Python 与 Emacs Lisp 项目有专项指导,其他语言可参考通用原则。
限制 资料主要给出方法论与参考文档,未说明具体工具链集成、编辑器或智能体平台的支持方式;除 Python 与 Emacs Lisp 外没有针对其他语言的专项参考。覆盖率目标等为建议性实践,不是强制标准。