@ContextConfiguration

@ContextConfiguration は、テストクラスに適用して、統合テスト用に ApplicationContext をロードおよび構成する方法を決定するために使用されるメタデータを構成するためのアノテーションです。具体的には、@ContextConfiguration は、コンテキストをロードするために使用されるアプリケーションコンテキストリソース locations またはコンポーネント classes を宣言します。

リソースの場所は通常、クラスパスにある XML 構成ファイルまたは Groovy スクリプトですが、コンポーネントクラスは通常 @Configuration クラスです。ただし、リソースの場所はファイルシステム内のファイルとスクリプトを参照することもでき、コンポーネントクラスは @Component クラス、@Service クラスなどにすることができます。詳細については、コンポーネントクラスを参照してください。

次の例は、XML ファイルを参照する @ContextConfiguration アノテーションを示しています。

  • Java

  • Kotlin

@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
1XML ファイルを参照します。
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
1XML ファイルを参照します。

次の例は、クラスを参照する @ContextConfiguration アノテーションを示しています。

  • Java

  • Kotlin

@ContextConfiguration(classes = TestConfig.class) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 クラスを参照します。
@ContextConfiguration(classes = [TestConfig::class]) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 クラスを参照します。

リソースの場所またはコンポーネントクラスを宣言する代わりに、またはそれに加えて、@ContextConfiguration を使用して ApplicationContextInitializer クラスを宣言できます。次の例は、このような場合を示しています。

  • Java

  • Kotlin

@ContextConfiguration(initializers = CustomContextInitializer.class) (1)
class ContextInitializerTests {
	// class body...
}
1 初期化子クラスを宣言します。
@ContextConfiguration(initializers = [CustomContextInitializer::class]) (1)
class ContextInitializerTests {
	// class body...
}
1 初期化子クラスを宣言します。

オプションで @ContextConfiguration を使用して、ContextLoader 戦略を宣言することもできます。ただし、デフォルトのローダーは initializers およびリソース locations またはコンポーネント classes のいずれかをサポートするため、通常はローダーを明示的に構成する必要はありません。

次の例では、場所とローダーの両方を使用しています。

  • Java

  • Kotlin

@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
1 ロケーションとカスタムローダーの両方を設定します。
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
1 ロケーションとカスタムローダーの両方を設定します。
@ContextConfiguration は、リソースの場所または構成クラス、およびスーパークラスまたはそれを囲むクラスによって宣言されたコンテキスト初期化子の継承をサポートします。

詳細については、コンテキスト管理@Nested テストクラスの構成@ContextConfiguration javadoc を参照してください。