AgentSkillsCN

test-driven-development

在编写实现代码之前,先编写测试用例——先让测试失败,再编写最简代码使其通过;这一做法确保了测试能够真正验证预期行为,因为必须先让测试失败,才能顺利通过。

SKILL.md
--- frontmatter
name: test-driven-development
description: Use when implementing any feature or bugfix, before writing implementation code - write the test first, watch it fail, write minimal code to pass; ensures tests actually verify behavior by requiring failure first

Test-Driven Development (TDD)

Overview

Write the test first. Watch it fail. Write minimal code to pass.

Core principle: If you didn't watch the test fail, you don't know if it tests the right thing.

Violating the letter of the rules is violating the spirit of the rules.

When to Use

Always:

  • New features
  • Bug fixes
  • Refactoring
  • Behavior changes

Exceptions (ask your human partner):

  • Throwaway prototypes
  • Generated code
  • Configuration files

Thinking "skip TDD just this once"? Stop. That's rationalization.

The Iron Law

code
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST

Write code before the test? Delete it. Start over.

No exceptions:

  • Don't keep it as "reference"
  • Don't "adapt" it while writing tests
  • Don't look at it
  • Delete means delete

Implement fresh from tests. Period.

Progressive Loading

L2 Content (loaded when methodology details needed):

  • See: references/methodology.md
    • Red-Green-Refactor Cycle
    • Good Tests Principles
    • Why Order Matters
    • Common Rationalizations
    • Verification Checklist

L3 Content (loaded when advanced patterns needed):

  • See: references/anti-patterns.md
    • Testing Mock Behavior
    • Test-Only Methods
    • Mocking Without Understanding
    • Incomplete Mocks
    • Integration Tests as Afterthought
    • Quick Reference Guide