JUnit 5概要

JUnitの説明、JUnitの対応バージョン、JUnitの構成

JUnitとは?

JUnitとは、Javaの単体テストのためのフレームワークである。オブジェクトのインスタンスを作成してロジックを実行し、結果値が期待値と一致するかを比較したり、ファイル、ネットワーク接続、データベース連携などのテストを実行したりできる。

JUnitはassert関連メソッドを提供し、テスト時に真偽、null、同一オブジェクトかどうかなどを検査できる。基本的には@Testアノテーションでテスト対象メソッドを指定し、BeforeAfterでテスト前後に実行する処理を指定する。

JUnitはJava向けのオープンソーステストフレームワークであり、『Design Patterns』を著したGoFの一員であるErich Gammaと、XPで有名なKent Beckが共同で開発した。JUnitは意図をコードで簡潔に表現し、そのコードが期待どおりに動作するかを検証する方法を提供する。もともとJUnitはIDEや開発ツール環境とは別に使えるテストフレームワークで、コンソール環境のコマンドラインやGUI環境で利用できる。

単体テストと機能テスト

単体テスト

単体テスト(unit test)は、プログラムの基本単位が内部設計仕様どおりに正しく動作するかをテストすることである。Javaでは基本単位がクラスなので、各クラスに含まれるメソッドが正しく動作するかをテストすればよい。そのため、単体テストの範囲は非常に限定される。

機能テスト

機能テスト(functional test)は、ソフトウェア全体が正しく動作するかを確認するテストである。ソフトウェアシステム全体を1つのブラックボックスとして見て、ユーザーの立場から各機能が正しく動作するかをテストする。機能テストは通常、別のテストチームが実施し、開発時とは異なるツールや技術を使用する。

JUnit 5サポート

  • JUnit 4
    • Java 1.4以上
  • JUnit 5
    • JUnit 5はJava 1.8以上

JUnit 5の構成

JUnit 4の構成はAll in Oneだったが、JUnit 5の構成はPlatform、Jupiter、Vintageに細分化された。

  • テストフレームワークを実行するための基礎モジュール
    • JUnit Platform: JVM上でテストフレームワークを実行するための基礎的な役割を担う。また、テスト開発のためのAPIを提供する。
  • 具体的なテストフレームワークモジュール
    • JUnit Jupiter: JUnit 5のテストおよびExtensionを作るための新しいプログラミングモデルと拡張モデルを組み合わせたTestEngineを提供する。
    • JUnit Vintage: 下位互換性のためにJUnit 4、JUnit 3を実行できるTestEngineである。

関連リンク