JavaのassertThrowsとは?例外が起きることをテストする考え方|確認問題の回答例

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

このページは、JavaのassertThrowsとは?例外が起きることをテストする考え方の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。

確認問題の回答例

@Test
void testCalculateFeeThrowsExceptionWhenAmountIsNegative() {
    ShippingFeeCalculator calculator = new ShippingFeeCalculator();

    assertThrows(
        IllegalArgumentException.class,
        () -> calculator.calculateFee(-1)
    );
}

解説

IllegalArgumentException.class は、期待する例外の種類です。() -> calculator.calculateFee(-1) は、例外が起きるはずの処理です。

このテストでは、-1 という不正な購入金額を渡したときに、IllegalArgumentException が通知されるかを確認しています。例外が起きなければ、テストは失敗します。

メッセージまで確認する場合

IllegalArgumentException exception = assertThrows(
    IllegalArgumentException.class,
    () -> calculator.calculateFee(-1)
);

assertEquals("購入金額は0円以上で指定してください。", exception.getMessage());

例外メッセージも仕様として大切な場合は、assertThrows の戻り値を変数に入れて、getMessage() の結果を assertEquals で確認できます。

元の記事に戻る

JavaのassertThrowsとは?例外が起きることをテストする考え方