【ジェイユニット】

JUnit とは?

最終更新:
💡 Javaプログラムの「健康診断」を自動でやってくれるお医者さん

Javaを中心とするJVM上のプログラム向けのテストフレームワーク。入力に対する期待結果や例外などをテストコードで指定し、繰り返し検証できる。テストに書いた条件を確認するもので、プログラム全体の正しさを保証するわけではない。

📌 このページのポイント
テストを実行し、期待を確かめる テストクラス @Test 加算 / 減算 除算 / 乗算 期待値と実際の値 を比較する Jupiter テスト発見 テスト実行 結果を通知 結果の例 ✓ 加算 ✓ 減算 × 除算 ✓ 乗算 3 / 4 成功 JUnit Platform 成功は、書いたテストの条件を満たしたこと JUnit 6系もJupiterを利用(仮の実行結果)
JupiterがPlatform上でテストを実行し、結果を返す。4件中3件成功という仮の例で、未確認の条件まで正しいとは限らない。
ひよこ ひよこ
JUnitってどういうもの?
ペンギン先生 ペンギン先生
たとえば加算メソッドに1と1を渡したら2になる、という期待をテストコードで書いて実行できるよ。人が毎回操作して確認する代わりに、同じ条件を繰り返し確かめられるんだ。
ひよこ ひよこ
テストが全部成功すれば、バグはない?
ペンギン先生 ペンギン先生
成功は、実行したテストの条件を満たしたという意味だよ。書いていない入力や状況の不具合まで消えたとは言えない。普通の入力だけでなく、境界の値や失敗する場合も考えよう。実行時間も、テスト内容や環境によって違うんだ。
ひよこ ひよこ
どうやって書くの?
ペンギン先生 ペンギン先生
JUnit Jupiterならメソッドにorg.junit.jupiter.api.Testの@Testを付け、AssertionsのassertEqualsなどで期待値と実際の値を比べるよ。たとえばassertEquals(2, calculator.add(1, 1))なら、期待する2と計算結果を比べる。@Testだけ付ければ確認条件まで自動で作られるわけではないんだ。
ひよこ ひよこ
JUnit 5とJUnit 6は別物?
ペンギン先生 ペンギン先生
JUnit 6にもPlatformとJupiterの構成が引き継がれているよ。Platformはテスト実行の土台、Jupiterはテストの書き方や拡張と実行エンジンを提供する。6系の実行にはJava 17以上が必要なので、使う版とJava環境を合わせて確認しよう。
ひよこ ひよこ
いろいろな入力で試す機能もある?
ペンギン先生 ペンギン先生
Jupiterの@ParameterizedTestで異なる入力を使うテストを書き、@Nestedで関連するテストを入れ子にまとめられるよ。JUnit 3・4のテストをPlatform上で動かすVintageもあるけれど、現行資料では非推奨で移行時の一時的な利用向け。IDEやビルドツールの実行設定も合わせて整えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JUnit」って出てきたら「Javaなどのコードを、テストで繰り返し確かめるフレームワーク」と思えばだいたいOK!
📖 おまけ:英語の意味
「JUnit」 = Javaユニットテスト
💬 JはJava、Unitは単体テストを連想させる名前。小さな単位の振る舞いをテストコードで確かめるための道具だよ。

参考資料

← 用語集にもどる