Claude
Skills
Sign in
Back

tdd-workflow

Included with Lifetime
$97 forever

# Test-Driven Development (TDD) Best Practices

Code Review

What this skill does

# Test-Driven Development (TDD) Best Practices

This skill guides rigorous test-first development following the Red-Green-Refactor cycle.

## When to Use

Activate when:
- Implementing new features
- Fixing bugs
- Refactoring existing code
- Making any code changes

## TDD Core Principles

### Red-Green-Refactor Cycle
1. **Red** - Write tests FIRST before implementation
2. **Green** - Write minimal code to pass tests
3. **Refactor** - Clean up while keeping tests green

### Test Quality Standards

**Write Tests First:**
- Tests should be minimal and focused on single behaviors
- Tests are documentation - they clearly show expected behavior
- If you can't easily test it, the design is wrong - refactor for testability

**Test Organization:**
- Use table-driven tests for multiple inputs/scenarios in Go
- Test file naming: `*_test.go` for unit tests, `e2e_test.go` for integration
- Always test error cases and edge conditions

**Test Types:**
- **Unit tests** - Mock external dependencies (network, filesystem, time)
- **Integration tests** - Validate real component interactions
- **End-to-end tests** - Cover critical user workflows

### Assertion Libraries

**Go Testing:**
- Use `testify/require` for assertions that should stop test execution
- Use `testify/assert` for assertions that should continue test execution

## Design for Testability

✅ **Testable patterns:**
- Dependency injection
- Interface-based abstractions
- Pure functions
- Isolated side effects

❌ **Hard to test (redesign):**
- Global state
- Hidden dependencies
- Tight coupling
- Side effects mixed with logic

## TDD Workflow

1. Write failing test(s) embodying acceptance criteria
2. Run tests - verify they fail for the right reason
3. Implement minimal code to make tests pass
4. Run tests - verify they all pass
5. Refactor for quality while keeping tests green
6. Repeat

## Quality Gates

Before considering work "done":
- [ ] All tests pass locally and in CI
- [ ] Coverage ≥ 90% lines/branches
- [ ] Error cases are tested
- [ ] Edge conditions are tested
- [ ] Tests document expected behavior clearly

Related in Code Review