此版本仍在开发中,尚未稳定。如需最新的稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

@ContextConfiguration

@ContextConfiguration 是一个可用于测试类的注解,用于配置元数据,这些元数据用于确定如何为集成测试加载和配置ApplicationContext。具体来说,@ContextConfiguration 声明了用于加载上下文的应用上下文资源locations或组件classesspring-doc.cadn.net.cn

资源位置通常是位于类路径中的XML配置文件或Groovy脚本,而组件类通常是@Configuration类。然而, 资源位置也可以引用文件系统中的文件和脚本,并且组件类可以是@Component类、 @Service类等等。更多详细信息请参阅 组件类spring-doc.cadn.net.cn

以下示例展示了一个引用XML文件的@ContextConfiguration注解:spring-doc.cadn.net.cn

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

以下示例展示了一个@ContextConfiguration注解,它引用了一个类:spring-doc.cadn.net.cn

@ContextConfiguration(classes = TestConfig.class) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 引用某个类。
@ContextConfiguration(classes = [TestConfig::class]) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 引用某个类。

作为声明资源位置或组件类的替代或补充方案,您可以使用 @ContextConfiguration 来声明 ApplicationContextInitializer 类。以下示例展示了这种情况:spring-doc.cadn.net.cn

@ContextConfiguration(initializers = CustomContextInitializer.class) (1)
class ContextInitializerTests {
	// class body...
}
1 声明初始化器类。
@ContextConfiguration(initializers = [CustomContextInitializer::class]) (1)
class ContextInitializerTests {
	// class body...
}
1 声明初始化器类。

您也可以选择使用@ContextConfiguration来声明ContextLoader策略。但请注意,通常不需要显式配置加载器,因为默认加载器支持initializers以及资源locations或组件classesspring-doc.cadn.net.cn

以下示例同时使用了位置和加载器:spring-doc.cadn.net.cn

@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 的javadocs以获取更多详细信息。spring-doc.cadn.net.cn