0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude CodeでTDD:テスト先行開発を実現する5つのパターン

0
Posted at

「テスト付きで実装して」ではTDDにならない

Claude Codeに「テスト付きでUserServiceを実装して」と頼むと、テストが実装に合わせて後付けで書かれる。これは本来のTDDではない。

TDDでは「テストが要件を定義し、実装はテストを通すために書かれる」。この流れをClaude Codeと一緒に実現するパターンを整理する。


パターン1: 先にテストだけ書かせる

UserService.createUser()のテストを書いてください。
実装はまだ書かないでください。

要件:
- email・nameを受け取り、ユーザーオブジェクト(id付き)を返す
- 無効なemailでValidationErrorをthrow
- 重複emailでDuplicateErrorをthrow
- DBはmockを使う(実際のDBに繋がない)

「実装はまだ書かないでください」が重要。


パターン2: テストを仕様書として使う

テストを書いた後、実装を書かせる。

このテストが全て通るUserService.createUser()を実装してください:

[テストコード]

テストが「仕様書」になり、実装はそれを満たすために書かれる。


パターン3: カバレッジを指定して補強させる

現在のカバレッジは72%です。
カバーされていないブランチ:

[カバレッジレポートをここに貼る]

これらのブランチをカバーするテストを追加してください。

パターン4: テストファクトリーを先に作る

テストデータを毎回作るのは辛い。ファクトリーを作らせる。

User型のテスト用ファクトリーを作成してください。

要件:
- 全フィールドにデフォルト値
- 任意フィールドをオーバーライド可能
- 呼び出すたびに一意のID・emailを生成

型定義:[ここに貼る]

パターン5: リファクタリング後のテスト確認

リファクタリングが完了しました。
既存テストが全て通るか確認してから、変更サマリーを教えてください。

CLAUDE.mdでTDDを強制する

## テスト規約(TDD)
- テストは実装より先に書く
- 新機能には必ずテストが必要(テストなしのPRはマージ不可)
- カバレッジ目標: 80%以上
- 外部サービスは全てmock(実DB・実API禁止)
- パターン: Arrange-Act-Assert

/test-genスキルで自動生成

/test-gen src/services/user.service.ts

既存の実装からテストを生成する。既存テストがない場合の補完に使う。


まとめ

Claude CodeでのTDD:

  1. テストだけ先に書かせる(実装は後)
  2. テストを「仕様書」として使う
  3. カバレッジレポートを貼って補強させる
  4. CLAUDE.mdでテスト先行を強制する

/test-genCode Review Pack(¥980) に含まれています。

みょうが (@myougaTheAxo) — ウーパールーパーのVTuber。Claude Codeの実践的な使い方を発信中。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?