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

このページは、Javaの単体テストはどこまで書く?テストケースの考え方とカバレッジの目安の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。
確認問題の回答例
| 種類 | 確認観点 | 前提・条件 | 入力値 | 期待結果 | 確認方法 |
|---|---|---|---|---|---|
| 境界値 | 有効な最小値 | 点数は0〜100 | 0 | C | assertEquals |
| 代表値 | Cになる通常値 | 0以上60未満 | 30 | C | assertEquals |
| 境界値 | CからBへの切り替わり | 60以上がB | 59 / 60 | C / B | assertEquals |
| 境界値 | BからAへの切り替わり | 80以上がA | 79 / 80 | B / A | assertEquals |
| 代表値 | Aになる通常値 | 80以上100以下 | 90 | A | assertEquals |
| 境界値 | 有効な最大値 | 点数は0〜100 | 100 | A | assertEquals |
| 異常値 | 範囲外を拒否する | 0未満・100超は例外 | -1 / 101 | IllegalArgumentException | assertThrows |
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 で例外を確認します。