C#でじゃんけん 第3版

C# でじゃんけんするプログラム 第3版 です。


第3版では、勝ち、負け、あいこを判断する JudgeResult() メソッドの単体テストを作成します。単体テストにより、その対象メソッドの動作を確認するとともに、実装の改良が自信を持って進められるようになります。


第3版のプログラム全体はこちら、第2版の記事はこちらです。


JudgeResult メソッドは、あなたの手 3 通り、コンピュータの手 3 通り、合計 3 x 3 = 9 通りの組み合わせの中から結果を判断します。単体テスト TestJudgeResult() メソッドは、そのそれぞれの場合についてテストを実施します。1 つのテストは、メソッドの入力、予期する結果、説明、という形にまとめます。

[TestMethod]
public void TestJudgeResult()
{
    CheckJudgeResult(JankenApp.GU, JankenApp.GU, JankenApp.Draw, "GU, GU => Draw");
    CheckJudgeResult(JankenApp.GU, JankenApp.CYOKI, JankenApp.YouWin, "GU, CYOKI => YouWin");
    CheckJudgeResult(JankenApp.GU, JankenApp.PA, JankenApp.ComputerWin, "GU, PA => ComputerWin");

    CheckJudgeResult(JankenApp.CYOKI, JankenApp.GU, JankenApp.ComputerWin, "CYOKI, GU => ComputerWin");
    CheckJudgeResult(JankenApp.CYOKI, JankenApp.CYOKI, JankenApp.Draw, "CYOKI, CYOKI => Draw");
    CheckJudgeResult(JankenApp.CYOKI, JankenApp.PA, JankenApp.YouWin, "CYOKI, PA => YouWin");

    CheckJudgeResult(JankenApp.PA, JankenApp.GU, JankenApp.YouWin, "PA, GU => YouWin");
    CheckJudgeResult(JankenApp.PA, JankenApp.CYOKI, JankenApp.ComputerWin, "PA, CYOKI => ComputerWin");
    CheckJudgeResult(JankenApp.PA, JankenApp.PA, JankenApp.Draw, "PA, PA => Draw");
}


TestJudgeResult() メソッドで使用している CheckJudgeResult() メソッドは、以下のように、指定の引数でメソッドを呼び出し、実際の結果が予期するものと同じかどうか確認します。

private void CheckJudgeResult(
    int yourHand, int computerHand, int expectedResult, string message)
{
    // 指定の引数でメソッドを呼び出し、実際の結果が予期するものと同じかどうか確認します。
    int actualResult = JankenApp.JudgeResult(yourHand, computerHand);
    Assert.AreEqual(expectedResult, actualResult, message);
}