主要な抽象化
フレームワークのコアは、TestContextManager クラスと TestContext、TestExecutionListener、SmartContextLoader インターフェースで構成されています。TestContextManager は、テストクラスごとに作成されます(たとえば、JUnit Jupiter の単一のテストクラス内のすべてのテストメソッドの実行用)。次に、TestContextManager は、現在のテストのコンテキストを保持する TestContext を管理します。TestContextManager は、テストの進行に応じて TestContext の状態も更新し、依存性注入の提供やトランザクションの管理などによって実際のテスト実行を計測する TestExecutionListener 実装に委譲します。SmartContextLoader は、特定のテストクラスの ApplicationContext をロードするロールを果たします。さまざまな実装の詳細と例については、javadoc と Spring Test スイートを参照してください。
TestContext
TestContext は、テストが実行されるコンテキスト(使用中の実際のテストフレームワークに依存しない)をカプセル化し、それが担当するテストインスタンスにコンテキスト管理とキャッシュサポートを提供します。TestContext は、リクエストされた場合に SmartContextLoader に委譲して ApplicationContext をロードします。
TestContextManager
TestContextManager は、Spring TestContext フレームワークへのメインエントリポイントであり、単一の TestContext を管理し、明確に定義されたテスト実行ポイントで各登録済み TestExecutionListener にイベントを通知します。
特定のテストフレームワークの "before before" または "before before" メソッドの前。
テストインスタンスの後処理。
特定のテストフレームワークの「前」または「各前」メソッドの前。
テストメソッドの実行直前、ただしテストのセットアップ後。
テストメソッドの実行直後、テストの分解前。
特定のテストフレームワークの「後」または「各後」メソッドの後。
特定のテストフレームワークの「クラスの後」または「すべての後」のメソッドの後。
TestExecutionListener
TestExecutionListener は、リスナーが登録されている TestContextManager によって発行されたテスト実行イベントに反応するための API を定義します。TestExecutionListener 設定を参照してください。
コンテキストローダー
ContextLoader は、Spring TestContext フレームワークによって管理される統合テスト用に ApplicationContext をロードするための戦略インターフェースです。このインターフェースの代わりに SmartContextLoader を実装して、コンポーネントクラス、アクティブな Bean 定義プロファイル、テストプロパティソース、コンテキスト階層、WebApplicationContext サポートをサポートする必要があります。
SmartContextLoader は、オリジナルの最小 ContextLoader SPI に取って代わる ContextLoader インターフェースの拡張です。具体的には、SmartContextLoader は、リソースの場所、コンポーネントクラス、コンテキスト初期化子の処理を選択できます。さらに、SmartContextLoader は、アクティブな Bean 定義プロファイルを設定し、ロードするコンテキストでプロパティソースをテストできます。
Spring は、次の実装を提供します。
DelegatingSmartContextLoader: 2 つのデフォルトローダーの 1 つ。テストクラスに対して宣言された構成、またはデフォルトの場所またはデフォルトの構成クラスの存在に応じて、内部でAnnotationConfigContextLoader、GenericXmlContextLoader、GenericGroovyXmlContextLoaderに委譲します。Groovy サポートは、Groovy がクラスパス上にある場合にのみ有効になります。WebDelegatingSmartContextLoader: 2 つのデフォルトローダーの 1 つ。テストクラスに対して宣言された構成、またはデフォルトの場所またはデフォルトの構成クラスの存在に応じて、内部でAnnotationConfigWebContextLoader、GenericXmlWebContextLoader、GenericGroovyXmlWebContextLoaderに委譲します。WebContextLoaderは、@WebAppConfigurationがテストクラスに存在する場合にのみ使用されます。Groovy サポートは、Groovy がクラスパス上にある場合にのみ有効になります。AnnotationConfigContextLoader: コンポーネントクラスから標準ApplicationContextをロードします。AnnotationConfigWebContextLoader: コンポーネントクラスからWebApplicationContextをロードします。GenericGroovyXmlContextLoader: Groovy スクリプトまたは XML 構成ファイルのいずれかであるリソースの場所から標準ApplicationContextをロードします。GenericGroovyXmlWebContextLoader: Groovy スクリプトまたは XML 構成ファイルのいずれかであるリソースの場所からWebApplicationContextをロードします。GenericXmlContextLoader: XML リソースの場所から標準ApplicationContextをロードします。GenericXmlWebContextLoader: XML リソースの場所からWebApplicationContextをロードします。