Javaの単体テストはどこまで書く?テストケースの考え方とカバレッジの目安|確認問題の回答例

Schoo Java入門 中級 第3回 単体テストによるビジネスロジック検証

このページは、Javaの単体テストはどこまで書く?テストケースの考え方とカバレッジの目安の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。

確認問題の回答例

種類確認観点前提・条件入力値期待結果確認方法
境界値有効な最小値点数は0〜1000CassertEquals
代表値Cになる通常値0以上60未満30CassertEquals
境界値CからBへの切り替わり60以上がB59 / 60C / BassertEquals
境界値BからAへの切り替わり80以上がA79 / 80B / AassertEquals
代表値Aになる通常値80以上100以下90AassertEquals
境界値有効な最大値点数は0〜100100AassertEquals
異常値範囲外を拒否する0未満・100超は例外-1 / 101IllegalArgumentExceptionassertThrows

JUnitコード例

@Test
void testJudgeRank() {
    ScoreChecker checker = new ScoreChecker();

    assertEquals("C", checker.judgeRank(0));
    assertEquals("C", checker.judgeRank(30));
    assertEquals("C", checker.judgeRank(59));
    assertEquals("B", checker.judgeRank(60));
    assertEquals("B", checker.judgeRank(79));
    assertEquals("A", checker.judgeRank(80));
    assertEquals("A", checker.judgeRank(90));
    assertEquals("A", checker.judgeRank(100));
}

@Test
void testJudgeRankThrowsExceptionWhenScoreIsOutOfRange() {
    ScoreChecker checker = new ScoreChecker();

    assertThrows(IllegalArgumentException.class, () -> checker.judgeRank(-1));
    assertThrows(IllegalArgumentException.class, () -> checker.judgeRank(101));
}

解説

60 と 80 で判定が切り替わるため、59、60、79、80 を境界値として確認しています。

下限の0はC、上限の100はAになることも確認します。また、仕様上受け付けない -1 と 101 は異常値として扱い、assertThrows で例外を確認します。

元の記事に戻る

Javaの単体テストはどこまで書く?テストケースの考え方とカバレッジの目安