@ContextConfiguration

@ContextConfiguration 是一种注解,可以应用于测试类,以配置用于确定如何加载和配置集成测试的 ApplicationContext 的元数据。具体来说,@ContextConfiguration 声明用于加载上下文的应用程序上下文资源 locations 或组件 classes

资源位置通常是位于类路径中的 XML 配置文件或 Groovy 脚本,而组件类通常是 @Configuration 类。但是,资源位置还可以引用文件系统中的文件和脚本,而组件类可以是 @Component 类、@Service 类,等等。有关进一步的详细信息,请参见 Component Classes

以下示例显示一个引用 XML 文件的 @ContextConfiguration 注解:

Java
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
1 引用 XML 文件。
Kotlin
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
2 引用 XML 文件。

以下示例显示一个引用类的 @ContextConfiguration 注解:

Java
@ContextConfiguration(classes = TestConfig.class) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 Referring to a class.
Kotlin
@ContextConfiguration(classes = [TestConfig::class]) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
2 Referring to a class.

作为声明资源位置或组件类的替代方案或补充方案,您可以使用 @ContextConfiguration 声明 ApplicationContextInitializer 类。以下示例演示了这种情况:

Java
@ContextConfiguration(initializers = CustomContextInitializer.class) (1)
class ContextInitializerTests {
	// class body...
}
1 Declaring an initializer class.
Kotlin
@ContextConfiguration(initializers = [CustomContextInitializer::class]) (1)
class ContextInitializerTests {
	// class body...
}
2 Declaring an initializer class.

您还可以选择使用 @ContextConfiguration 声明 ContextLoader 策略。但请注意,通常不需要显式配置加载器,因为默认加载器支持 initializers 和资源 locations 或组件 classes

以下示例同时使用位置和加载器:

Java
@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
1 配置位置和自定义加载器。
Kotlin
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
2 配置位置和自定义加载器。

@ContextConfiguration 提供支持以继承资源位置或配置类,以及超类或封闭类声明的上下文初始化程序。

有关详细信息,请参阅 Context Management@Nested test class configuration和 `@ContextConfiguration`javadoc。