最新の安定バージョンについては、Spring Framework 6.2.8 を使用してください!

テストの事前サポート

この章では、Spring TestContext フレームワークを使用した統合テストに対する Spring の Ahead of Time (AOT) サポートについて説明します。

テストサポートは、Spring のコア AOT サポートを次の機能で拡張します。

  • TestContext フレームワークを使用して ApplicationContext をロードする、現在のプロジェクト内のすべての統合テストのビルド時の検出。

    • 現在のプロジェクトに登録されている JUnit プラットフォーム TestEngine を使用してテストが実行される限り、JUnit Jupiter および JUnit 4 に基づくテストクラスの明示的なサポートと、TestNG および Spring のコアテストアノテーションを使用するその他のテストフレームワークの暗黙的なサポートを提供します。

  • ビルド時の AOT 処理: 現在のプロジェクト内の各固有のテスト ApplicationContext は、AOT 処理のためにリフレッシュされます

  • ランタイム AOT サポート: AOT ランタイムモードで実行する場合、Spring 統合テストは、コンテキストキャッシュに透過的に参加する AOT 最適化 ApplicationContext を使用します。

@ContextHierarchy アノテーションは現在、AOT モードではサポートされていません。

GraalVM ネイティブイメージ内で使用するテスト固有のランタイムヒントを提供するには、次のオプションがあります。

TestRuntimeHintsRegistrar API は、コア RuntimeHintsRegistrar API のコンパニオンとして機能します。特定のテストクラスに固有ではないテストサポートのグローバルヒントを登録する必要がある場合は、テスト固有の API よりも RuntimeHintsRegistrar の実装を優先してください。

カスタム ContextLoader を実装する場合、AOT ビルド時の処理と AOT ランタイム実行のサポートを提供するために、AotContextLoader (Javadoc) を実装する必要があります。ただし、Spring Framework および Spring Boot によって提供されるすべてのコンテキストローダーの実装は、すでに AotContextLoader を実装していることに注意してください。

カスタム TestExecutionListener を実装する場合、AOT 処理に参加するには AotTestExecutionListener (Javadoc) を実装する必要があります。例については、spring-test モジュールの SqlScriptsTestExecutionListener を参照してください。