mcpField
T
tdd-red-green-refactor

tdd-red-green-refactor

github.com/google-labs-code测试与质量1.8k172 次安装4 周前更新
代码仓库

关于 tdd-red-green-refactor

面向 TypeScript 的技能,指导在 AI 辅助编程中使用红绿重构 TDD 流程,强调渐进测试、最小实现和验证规则。

主要功能

  1. 01红绿重构测试循环
  2. 02一次编写一个测试
  3. 03最小实现指引
  4. 04TypeScript 类型与断言
  5. 05保持测试完整性的规则

适用场景

  1. 01以测试优先开发小功能
  2. 02确认失败源于缺失行为
  3. 03在测试通过时重构
  4. 04防止修改削弱现有测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/google-labs-code/stitch-sdk --skill tdd-red-green-refactor

安装后在 Claude Code 中输入/tdd-red-green-refactor确认已加载。

详细介绍

Red-Green-Refactor(TDD)技能:TypeScript 版

此技能为 AI 辅助编程构建了一套结构化框架,确保每一行代码都可验证、类型明确且目的清晰。

三阶段循环

阶段 1:Red(确认失败)

你必须证明该功能尚不存在,并且测试有效。

  1. 编写一个测试:针对下一项小型行为编写一个测试用例(例如使用 Vitest 或 Jest)。
  2. 运行并确认失败:运行测试。测试必须失败。
  3. 验证:确保失败是由缺失逻辑导致的(例如,ReferenceError: add is not defined),而不是配置错误。
阶段 2:Green(最小化通过)

尽可能快速、简单地让测试通过。

  1. 最小化实现:编写满足测试要求的最简单代码。不要为未来构建;只专注于当前的“Red”测试。
  2. 运行测试:运行测试套件。所有测试都必须变为 Green。
  3. 提供证据:从 Red 到 Green 的转变就是开发者的“工作成果证明”。
阶段 3:重构(清理)

在保持 Green 状态的同时改进代码结构。

  1. 清理:改进命名、消除重复,并优化阶段 2 编写的代码。
  2. 安全网:每次修改后都重新运行测试。如果测试变为 Red,立即撤销修改。

核心操作规则

1. 禁止“横向铺陈”

严禁一次性编写大量测试。必须严格遵循增量循环:

  • 编写 1 个测试 -> 看它失败 -> 编写 1 个修复 -> 看它通过。
  • 针对每个子功能重复此循环。
2. 施加反馈约束

利用自动化断言和强类型(TypeScript)作为反馈约束,防止 AI“猜测”解决方案,或在低质量代码中“打滚”。

3. 验证完整性

绝不要修改现有测试来让失败的实现通过。如果必须修改测试,原因必须是需求发生了变化,而不是代码难以编写。


示例工作流(TypeScript + Vitest)

步骤 1:Red

// math.test.ts
import { describe, it, expect } from "vitest";
import { add } from "./math";

describe("add", () => {
  it("should sum two numbers", () => {
    expect(add(2, 2)).toBe(4); // Fails: ReferenceError: add is not defined
  });
});

步骤 2:Green

// math.ts
export const add = (a: any, b: any) => {
  return 4; // Passes: Minimal code to satisfy the test
};

步骤 3:重构

// math.ts
/**
 * Sums two numbers with explicit type safety.
 */
export const add = (a: number, b: number): number => {
  return a + b; // Passes: Proper implementation with safety net
};

评论

支持 Markdown