name: implementation-writing-tests description: TDD方法論に従ってテストを作成します。テスト対象コードの分析、AAA/Given-When-Thenパターンの適用、正常系・エッジケース・エラー系のカバレッジを確保します。「テストを書いて」「テストを作成」「単体テストを追加」などのリクエストで起動します。
テスト作成
TDD方法論に従ってテストを作成する。
参照ルール
- テストルール:
rules/core/testing.md(AAA、命名規則、テストダブル) - 設計原則:
rules/core/design.md(コロケーション) - TDDルール:
rules/core/tdd.md
ワークフロー
ステップ1: テスト対象の確認
テスト対象のコードを読み込み、以下を把握する:
- 対象の機能/メソッドの責務
- 入力と出力の型
- エッジケースと境界条件
- 依存関係(モックが必要か)
ステップ2: リファレンスの読み込み(必須)
Claude指示: テストを書く前に、必ず対応するリファレンスファイルをReadツールで読み込んでください。
プロジェクトの言語を特定し、以下のリファレンスをReadツールで読み込む:
| 言語/フレームワーク | リファレンス |
|---|---|
| React + TypeScript | references/react-typescript.md |
| Go | references/go.md |
| Rust | references/rust.md |
// 例: Goプロジェクトの場合
Read(file_path=".claude/skills/writing-tests/references/go.md")
リファレンスを読まずにテストを書くことは禁止です。
ステップ3: テストファイルの配置
テストは実装の近くに配置する(コロケーション)。
詳細は rules/core/design.md を参照。
ステップ4: テスト命名
テスト名には3要素を含める。詳細は rules/core/testing.md を参照。
ステップ5: テスト構造
AAA (Arrange-Act-Assert) パターンを基本とする。
詳細は rules/core/testing.md を参照。
ステップ6: テストの種類と優先度
テスティングトロフィー(優先順位):
- 単体テスト(基盤): 高速、集中、多数
- 統合テスト(中間): コンポーネント間の相互作用
- E2Eテスト(頂点): 最小限だが重要なユーザーフロー
ステップ7: モック
依存性注入を活用してテスト可能にする。
テストダブルの種類は rules/core/testing.md を参照。
必須テストケース
- 正常系: 期待通りの入力で期待通りの出力
- エッジケース: 境界値、空の入力、最大値/最小値
- エラー系: 不正な入力、例外処理
セルフレビュー
テスト作成後、以下のチェックリストで確認する。
- テスト名が3要素(何を、条件、結果)を含んでいる
- AAA/Given-When-Thenパターンに従っている
- 正常系・エッジケース・エラー系をカバー
- テストが独立していて他のテストに依存しない
- モックが適切に使用されている
- テストが高速に実行できる