mcpField
T
tdd-red-green-refactor

tdd-red-green-refactor

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

关于 tdd-red-green-refactor

面向 AI 辅助 TypeScript 编程的 TDD 技能,规定按 Red、Green、Refactor 循环逐步实现并验证行为。强调一次编写一个测试、验证失败原因,并保留现有测试的完整性。

主要功能

  1. 01Red-Green-Refactor 三阶段循环
  2. 02每次只编写一个测试
  3. 03确认失败源于缺失逻辑
  4. 04最小实现后运行测试
  5. 05重构后重新验证
  6. 06禁止为通过而修改测试

适用场景

  1. 01为 TypeScript 功能逐步编写测试
  2. 02确认测试失败不是配置错误
  3. 03在测试通过时清理代码结构

安装

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

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

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

详细介绍

红-绿-重构(TDD)Skill:TypeScript 版

本 Skill 为 AI 辅助编程提供一套结构化框架,确保每一行代码都可验证、有类型约束且目的明确。

三阶段循环

阶段 1:红(确认失败)

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

  1. 编写一个测试:针对下一个小的行为,创建一个测试用例(例如使用 Vitest 或 Jest)。
  2. 执行并失败:运行测试,它必须失败。
  3. 验证:确保失败是由于缺少相应逻辑所致(例如 ReferenceError: add is not defined),而不是配置错误。
阶段 2:绿(最小通过)

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

  1. 最小实现:编写满足测试的最简代码。不要为未来做准备,严格专注于当前的"红"测试。
  2. 运行测试:执行测试套件,所有测试都必须为绿色。
  3. 证据:从红到绿的转变,就是开发者的"工作证明"。
阶段 3:重构(清理)

在保持"绿"状态的前提下改进代码结构。

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

核心操作规则

1. 禁止"横向铺开"

严格禁止一次性编写大量测试(即"铺开")。你必须遵循严格的增量循环:

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

利用自动化断言和强类型(TypeScript)作为反压机制,防止 AI "猜测"解决方案,或用低质量代码"在泥潭中乱撞"。

3. 完整性验证

切勿为了让失败的实现通过而修改已有测试。只有当需求发生变化时才可以修改测试,而不能因为代码难以编写就修改测试。


示例工作流(TypeScript + Vitest)

步骤 1:红

// 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:绿

// 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