コンテキスト初期化子を使用したコンテキスト構成
コンテキスト初期化子を使用してテスト用に ApplicationContext
を構成するには、@ContextConfiguration
でテストクラスにアノテーションを付け、ApplicationContextInitializer
を実装するクラスへの参照を含む配列で initializers
属性を構成します。宣言されたコンテキスト初期化子は、テスト用にロードされる ConfigurableApplicationContext
を初期化するために使用されます。宣言された各イニシャライザーによってサポートされる具体的な ConfigurableApplicationContext
型は、使用中の SmartContextLoader
によって作成された ApplicationContext
の型(通常は GenericApplicationContext
)と互換性がある必要があることに注意してください。さらに、初期化子が呼び出される順序は、Spring の Ordered
インターフェースを実装するか、Spring の @Order
アノテーションまたは標準 @Priority
アノテーションが付けられているかによって異なります。次の例は、初期化子の使用方法を示しています。
Java
Kotlin
@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from TestConfig
// and initialized by TestAppCtxInitializer
@ContextConfiguration(
classes = TestConfig.class,
initializers = TestAppCtxInitializer.class) (1)
class MyTest {
// class body...
}
1 | 構成クラスと初期化子を使用して構成を指定します。 |
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from TestConfig
// and initialized by TestAppCtxInitializer
@ContextConfiguration(
classes = [TestConfig::class],
initializers = [TestAppCtxInitializer::class]) (1)
class MyTest {
// class body...
}
1 | 構成クラスと初期化子を使用して構成を指定します。 |
また、XML 構成ファイル、Groovy スクリプト、@ContextConfiguration
のコンポーネントクラスの宣言を完全に省略し、代わりに ApplicationContextInitializer
クラスのみを宣言することができます。ApplicationContextInitializer
クラスは、XML ファイルから Bean 定義をプログラムでロードしたり、構成クラス。次の例は、その方法を示しています。
Java
Kotlin
@ExtendWith(SpringExtension.class)
// ApplicationContext will be initialized by EntireAppInitializer
// which presumably registers beans in the context
@ContextConfiguration(initializers = EntireAppInitializer.class) (1)
class MyTest {
// class body...
}
1 | 初期化子のみを使用して構成を指定します。 |
@ExtendWith(SpringExtension::class)
// ApplicationContext will be initialized by EntireAppInitializer
// which presumably registers beans in the context
@ContextConfiguration(initializers = [EntireAppInitializer::class]) (1)
class MyTest {
// class body...
}
1 | 初期化子のみを使用して構成を指定します。 |