JavaのJUnitテストの書き方とは?@Testからテストメソッドの作り方まで理解する

本記事は、Schooの「Java入門 中級【2026年版】」第3回「単体テストによるビジネスロジック検証」を学ぶ前後に、JUnitのテストクラスの書き方を整理したい方向けの記事です。
単体テストでは、assertEquals や assertThrows だけを覚えても、テストコード全体の形が見えていないと書きにくくなります。この記事では、@Test、テストメソッド、テスト対象の準備、結果の確認という流れで、JUnitの基本形を整理します。
Schoo コースページ:Java入門 中級【2026年版】
JUnitのテストは普通のJavaコードに近い形で書く
JUnitのテストコードも、基本的にはJavaのクラスとメソッドで書きます。違いは、テストとして実行したいメソッドに @Test を付けることです。
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class ShippingFeeCalculatorTest {
@Test
void testCalculateFee() {
ShippingFeeCalculator calculator = new ShippingFeeCalculator();
int result = calculator.calculateFee(3000);
assertEquals(500, result);
}
}
このコードでは、ShippingFeeCalculator の calculateFee メソッドを実行し、結果が 500 になるかを確認しています。
@Testはテストとして実行する目印
@Test は、そのメソッドをJUnitのテストとして実行するための目印です。@Test が付いているメソッドは、JUnitの実行対象になります。
@Test は、通常のメソッドを「テストとして実行するメソッド」にする目印です。テストメソッドは、画面に文字を表示するためのものではありません。処理を実行して、期待した結果と合っているかを確認するためのメソッドです。
テスト対象のクラスを準備する
テストメソッドの中では、まずテスト対象のクラスを使える状態にします。インスタンスメソッドを確認する場合は、通常のJavaコードと同じように new でオブジェクトを作ります。
ShippingFeeCalculator calculator = new ShippingFeeCalculator();
この1行は、「これから ShippingFeeCalculator の動きを確認するために、テスト対象を用意している」と読めます。
メソッドを実行して結果を変数に入れる
次に、確認したいメソッドを実行します。戻り値がある場合は、結果を変数に入れてから assertEquals で確認すると、処理の流れが読みやすくなります。
int result = calculator.calculateFee(3000);
この例では、購入金額 3000 を渡したときの送料計算結果を result に入れています。
期待する結果をassertEqualsで確認する
最後に、期待する結果と実際の結果を比べます。戻り値を確認するときは、assertEquals を使います。
assertEquals(500, result);
第1引数の 500 は期待値、第2引数の result は実際の結果です。ここが一致すればテストは成功し、一致しなければ失敗します。
例外を確認するときはassertThrowsを使う
不正な値を渡したときに例外になることを確認したい場合は、assertThrows を使います。戻り値を比べるテストとは書き方が変わります。
@Test
void testCalculateFeeThrowsExceptionWhenAmountIsNegative() {
ShippingFeeCalculator calculator = new ShippingFeeCalculator();
assertThrows(
IllegalArgumentException.class,
() -> calculator.calculateFee(-1)
);
}
このテストでは、-1 を渡したときに IllegalArgumentException が通知されることを確認しています。
テストメソッド名は確認内容が分かる名前にする
テストメソッド名は、テストが失敗したときにも表示されます。そのため、何を確認しているのかが分かる名前にしておくと、あとから原因を探しやすくなります。
最初は長く感じても、testCalculateFeeWhenAmountIs3000 のように、対象メソッドと条件が分かる名前にしておくと読み返しやすくなります。
確認問題
次の仕様を確認するJUnitテストを書いてください。
DiscountCalculatorのcalculateDiscountRateメソッドは、購入金額が10000円以上なら10、5000円以上10000円未満なら5、5000円未満なら0を返す。
5000 と 10000 の境界値を含めて、JUnitのテストメソッドを作ってみましょう。
演習後の確認:こちらのページを使って、自分で書いた内容を見直せます。
まとめ
- JUnitのテストは、Javaのクラスとメソッドとして書く
@Testは、JUnitにテストとして実行してもらうための目印- テストメソッドは、準備、実行、確認の流れで読む
- 戻り値は
assertEquals、例外はassertThrowsで確認する - テストメソッド名は、確認内容が分かる名前にする