Javaの単体テストで状態変化を確認するには?戻り値だけでは分からない処理のテスト|確認問題の回答例

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

このページは、Javaの単体テストで状態変化を確認するには?戻り値だけでは分からない処理のテストの確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。

確認問題の回答例

Walletcharge は、戻り値と残高の状態変化の両方を見るとよいです。さらに、上限50000円と不正な加算金額も確認します。

確認したいこと期待する結果
戻り値残高1000円に2000円を加算charge(2000)3000 を返す
状態変化残高1000円に2000円を加算getBalance()3000 を返す
上限残高49000円に2000円を加算戻り値も残高も 50000 になる
異常系charge(0)例外が発生する
異常系charge(-100)例外が発生する

JUnitコード例

@Test
void testChargeReturnsUpdatedBalance() {
    Wallet wallet = new Wallet(1000);

    int actual = wallet.charge(2000);

    assertEquals(3000, actual);
}

@Test
void testChargeChangesBalance() {
    Wallet wallet = new Wallet(1000);

    wallet.charge(2000);

    assertEquals(3000, wallet.getBalance());
}

@Test
void testChargeStopsAt50000() {
    Wallet wallet = new Wallet(49000);

    int actual = wallet.charge(2000);

    assertEquals(50000, actual);
    assertEquals(50000, wallet.getBalance());
}

@Test
void testChargeThrowsExceptionWhenAmountIsZero() {
    Wallet wallet = new Wallet(1000);

    assertThrows(
            IllegalArgumentException.class,
            () -> wallet.charge(0)
    );
}

状態が変わるメソッドでは、戻り値を確認するテストだけでは、オブジェクト内部の値が本当に更新されたかまでは分かりません。必要に応じて、実行後の状態も確認します。

元の記事に戻る

Javaの単体テストで状態変化を確認するには?戻り値だけでは分からない処理のテスト