本文へスキップ
BecomeCoder

C#デザインパターンコース · 第2章 TDD ― テスト駆動開発 · レッスン14

TDDとは ― Red-Green-Refactor

ブラウザで完結

導入

**TDD(テスト駆動開発)**は「実装より先にテストを書く」開発手法です。**Red(失敗するテスト)→ Green(通す最小実装)→ Refactor(整える)**のリズムで、正しく動く証拠を積み上げながら進みます。

図解

flowchart LR
    R["Red<br/>失敗するテストを書く"] --> G["Green<br/>通す最小実装"]
    G --> RF["Refactor<br/>コードを整える"]
    RF --> R
    style R fill:#ffebee
    style G fill:#e8f5e9

サンプル

// テストは「入力→期待される出力」を確認するコード。まずこれを書く(Red)
// 次に IsEven を実装して通す(Green)

Assert(IsEven(4) == true,  "4は偶数");
Assert(IsEven(7) == false, "7は奇数");
Console.WriteLine("全テスト成功");

bool IsEven(int n) => n % 2 == 0;   // テストを通す実装(Green)

void Assert(bool condition, string name)
{
    if (!condition) throw new Exception($"FAIL: {name}");
}
  • 先に「期待する結果」をテストとして書く(この時点では実装がなく失敗=Red)
  • テストを通す最小限の実装を書く(Green)
  • 動作を保ったままコードを整理する(Refactor)

演習

Assert(Triple(3) == 9, "3の3倍は9");
Assert(Triple(0) == 0, "0の3倍は0");
Console.WriteLine("全テスト成功");

// TODO: 上のテストを通す Triple メソッド(引数を3倍して返す)を実装してください
void Assert(bool condition, string name)
{
    if (!condition) throw new Exception($"FAIL: {name}");
}
___
  • 期待される出力: 全テスト成功
ヒント1を見る

int Triple(int n) => n * 3;

ヒント2を見る

テストが要求する仕様(3倍)をそのまま実装します

まとめ

  • TDDは実装より先にテストを書く
  • Red(失敗)→ Green(通す)→ Refactor(整える)のリズム
  • 「正しく動く証拠」を積み上げながら進める

次回: 実務のテストフレームワークxUnitの記法です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。