テストの事前サポート
この章では、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
を使用します。
デフォルトでは、すべてのテストが AOT モードで有効になります。ただし、@DisabledInAotMode
のアノテーションを付けることで、AOT モードのテストクラス全体または個々のテストメソッドを選択的に無効にすることができます。JUnit Jupiter を使用する場合、Jupiter の @EnabledInNativeImage
および @DisabledInNativeImage
アノテーションを使用して、GraalVM ネイティブイメージ内のテストを選択的に有効または無効にすることができます。@DisabledInAotMode
は、JUnit Jupiter の @DisabledInNativeImage
アノテーションと同様に、GraalVM ネイティブイメージ内で実行する場合、アノテーション付きのテストクラスまたはテストメソッドも無効にすることに注意してください。
デフォルトでは、ビルド時の AOT 処理中にエラーが発生した場合、例外がスローされ、プロセス全体がただちに失敗します。 エラーが発生した後もビルド時の AOT 処理を続行したい場合は、
|
|
GraalVM ネイティブイメージ内で使用するテスト固有のランタイムヒントを提供するには、次のオプションがあります。
カスタム
TestRuntimeHintsRegistrar
(Javadoc) を実装し、META-INF/spring/aot.factories
を介してグローバルに登録します。カスタム
RuntimeHintsRegistrar
(Javadoc) を実装し、META-INF/spring/aot.factories
を介してグローバルに登録するか、@ImportRuntimeHints
(Javadoc) を介してテストクラスにローカルに登録します。@Reflective
(Javadoc) または@RegisterReflectionForBinding
(Javadoc) でテストクラスにアノテーションを付けます。Spring のコアランタイムヒントとアノテーションサポートの詳細については、実行時のヒントを参照してください。
|
カスタム ContextLoader
を実装する場合、AOT ビルド時の処理と AOT ランタイム実行のサポートを提供するために、AotContextLoader
(Javadoc) を実装する必要があります。ただし、Spring Framework および Spring Boot によって提供されるすべてのコンテキストローダーの実装は、すでに AotContextLoader
を実装していることに注意してください。
カスタム TestExecutionListener
を実装する場合、AOT 処理に参加するには AotTestExecutionListener
(Javadoc) を実装する必要があります。例については、spring-test
モジュールの SqlScriptsTestExecutionListener
を参照してください。