@ContextConfiguration
@ContextConfiguration
是一个可以应用于测试类的注解,用于配置元数据,这些元数据决定了如何为集成测试加载和配置 ApplicationContext
。具体来说,@ContextConfiguration
声明了用于加载上下文的应用程序上下文资源 locations
或组件 classes
。
资源位置通常是位于类路径中的 XML 配置文件或 Groovy 脚本,而组件类通常是 @Configuration
类。然而,资源位置也可以指文件系统中的文件和脚本,组件类可以是 @Component
类、@Service
类等等。更多详情请参见 组件类。
以下示例展示了一个引用 XML 文件的 @ContextConfiguration
注解:
- Java
-
@ContextConfiguration("/test-config.xml") [id="CO1-1"][id="CO1-1"][id="CO1-1"](1) class XmlApplicationContextTests { // class body... }
<1> 引用一个 XML 文件。
- Kotlin
-
@ContextConfiguration("/test-config.xml") [id="CO2-1"][id="CO1-2"][id="CO2-1"](1) class XmlApplicationContextTests { // class body... }
<1> 引用一个 XML 文件。
以下示例展示了一个引用类的 @ContextConfiguration
注解:
- Java
-
@ContextConfiguration(classes = TestConfig.class) [id="CO3-1"][id="CO1-3"][id="CO3-1"](1) class ConfigClassApplicationContextTests { // class body... }
<1> 引用一个类。
- Kotlin
-
@ContextConfiguration(classes = [TestConfig::class]) [id="CO4-1"][id="CO1-4"][id="CO4-1"](1) class ConfigClassApplicationContextTests { // class body... }
<1> 引用一个类。
作为声明资源位置或组件类的替代或补充,您可以使用 @ContextConfiguration
来声明 ApplicationContextInitializer
类。以下示例展示了这种情况:
- Java
-
@ContextConfiguration(initializers = CustomContextInitializer.class) [id="CO5-1"][id="CO1-5"][id="CO5-1"](1) class ContextInitializerTests { // class body... }
<1> 声明一个初始化器类。
- Kotlin
-
@ContextConfiguration(initializers = [CustomContextInitializer::class]) [id="CO6-1"][id="CO1-6"][id="CO6-1"](1) class ContextInitializerTests { // class body... }
<1> 声明一个初始化器类。
您还可以选择使用 @ContextConfiguration
来声明 ContextLoader
策略。但是请注意,您通常不需要显式配置加载器,因为默认加载器支持 initializers
和资源 locations
或组件 classes
。
以下示例同时使用了位置和加载器:
- Java
-
@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class) [id="CO7-1"][id="CO1-7"][id="CO7-1"](1) class CustomLoaderXmlApplicationContextTests { // class body... }
<1> 同时配置位置和自定义加载器。
- Kotlin
-
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class) [id="CO8-1"][id="CO1-8"][id="CO8-1"](1) class CustomLoaderXmlApplicationContextTests { // class body... }
<1> 同时配置位置和自定义加载器。
|
更多详情请参见 上下文管理、@Nested
测试类配置 和 @ContextConfiguration
Javadoc。