JavaのassertEqualsとは?期待値と実際の結果を比べる考え方

最終更新日

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

本記事は、Schooの「Java入門 中級【2026年版】」第3回「単体テストによるビジネスロジック検証」を学ぶ前後に、JUnitの assertEquals の考え方を整理したい方向けの記事です。

assertEquals は、単体テストでよく使う確認方法です。「この入力なら、この結果になるはず」という期待値と、メソッドを実行した実際の結果を比べます。

Schoo コースページ:Java入門 中級【2026年版】

assertEqualsは期待値と実際の結果を比べる

assertEquals は、2つの値が同じかどうかを確認するために使います。単体テストでは、左側に期待値、右側に実際の結果を置いて考えると読みやすくなります。

図解:assertEqualsは期待値と実際の結果を比べる
入力
3000
メソッドを実行
calculateFee(3000)
実際の結果
500
期待値
500
assertEquals(500, actual) は、「500になるはず」という期待値と、実際に返ってきた値を比べます。

mainで表示して確認する方法との違い

main メソッドで実行して、画面に表示された値を人が見る方法でも、動作確認はできます。ただし、毎回人が表示結果を見て判断する必要があります。

ShippingFeeCalculator calculator = new ShippingFeeCalculator();

System.out.println(calculator.calculateFee(3000));

この方法では、表示された 500 を見て「合っている」と人が判断します。assertEquals を使うと、その判断をテストコードに書けます。

ShippingFeeCalculator calculator = new ShippingFeeCalculator();

int actual = calculator.calculateFee(3000);

assertEquals(500, actual);

これなら、結果が 500 ならテスト成功、違う値ならテスト失敗としてJUnitが知らせてくれます。

第1引数には期待値を書く

assertEquals は、基本的に assertEquals(期待値, 実際の結果) の順番で書きます。

図解:第1引数は期待値、第2引数は実際の結果
第1引数
500
期待値。テストする人が「こうなるはず」と決めた値。
第2引数
actual
実際の結果。メソッドを実行して返ってきた値。
assertEquals(500, actual);
JUnitでは、先に期待値、後ろに実際の結果を書く形で覚えると読みやすくなります。

たとえば「購入金額が3000円なら送料は500円になるはず」と考える場合、期待値は 500 です。メソッドの実行結果は actual という変数に入れておくと読みやすくなります。

int actual = calculator.calculateFee(3000);

assertEquals(500, actual);

一致しない場合はテストが失敗する

assertEquals では、期待値と実際の結果が一致しない場合、テストは失敗します。これは悪いことではなく、「想定と違う動きがある」と気づくための情報です。

図解:一致しないとテストは失敗する
成功する例
expected: 500
actual: 500
期待値と実際の結果が同じ
失敗する例
expected: 500
actual: 0
期待した値と実際の結果が違う
テストが失敗したら、期待値が間違っているのか、実装が間違っているのかを確認します。

失敗したときは、すぐに実装だけを疑うのではなく、期待値の考え方が正しいかも確認します。テストコードにも間違いが入ることがあります。

境界値をassertEqualsで確認する

assertEquals は、条件の境目を確認するときにも役立ちます。たとえば「5000円以上なら送料無料」というルールなら、499950005001 を確認すると、条件式の間違いに気づきやすくなります。

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

    assertEquals(500, calculator.calculateFee(4999));
    assertEquals(0, calculator.calculateFee(5000));
    assertEquals(0, calculator.calculateFee(5001));
}

このように、単に1つの値だけを確認するのではなく、条件が切り替わる境目を確認すると、テストの意味がはっきりします。

確認問題

次の送料計算メソッドをテストするとします。

public int calculateFee(int amount) {
    if (amount >= 5000) {
        return 0;
    }
    return 500;
}

「3000円なら送料500円」「5000円なら送料0円」を確認する assertEquals を書いてください。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

まとめ

  • assertEquals は、期待値と実際の結果を比べる確認
  • 基本は assertEquals(期待値, 実際の結果) の順番で書く
  • main で目視する代わりに、テストコードで自動確認できる
  • 境界値を確認すると、条件式の間違いに気づきやすい

関連する記事

シェアする