@ContextConfiguration
@ContextConfiguration
は、テストクラスに適用して、統合テスト用に ApplicationContext
をロードおよび構成する方法を決定するために使用されるメタデータを構成するためのアノテーションです。具体的には、@ContextConfiguration
は、コンテキストをロードするために使用されるアプリケーションコンテキストリソース locations
またはコンポーネント classes
を宣言します。
リソースの場所は通常、クラスパスにある XML 構成ファイルまたは Groovy スクリプトですが、コンポーネントクラスは通常 @Configuration
クラスです。ただし、リソースの場所はファイルシステム内のファイルとスクリプトを参照することもでき、コンポーネントクラスは @Component
クラス、@Service
クラスなどにすることができます。詳細については、コンポーネントクラスを参照してください。
次の例は、XML ファイルを参照する @ContextConfiguration
アノテーションを示しています。
Java
Kotlin
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
// class body...
}
1 | XML ファイルを参照します。 |
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
// class body...
}
1 | XML ファイルを参照します。 |
次の例は、クラスを参照する @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 を参照してください。