@ContextConfiguration
@ContextConfiguration
是一个可以应用于测试类的注解,用于配置元数据,该元数据决定了如何为集成测试加载和配置一个 ApplicationContext
。具体来说,@ContextConfiguration
声明了用于加载上下文的应用上下文资源 locations
或组件 classes
。
资源 locations 通常是类路径中的 XML 配置文件或 Groovy 脚本,而组件 classes 通常是 @Configuration
类。然而,资源 locations 也可以引用文件系统中的文件和脚本,并且组件 classes 可以是 @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 | 引用类。 |
作为声明资源 locations 或组件 classes 的替代或补充,您可以使用 @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
策略。然而,请注意,通常无需显式配置 loader,因为默认 loader 支持 initializers
以及资源 locations
或组件 classes
。
以下示例同时使用了 location 和 loader
-
Java
-
Kotlin
@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class) (1)
class CustomLoaderXmlApplicationContextTests {
// class body...
}
1 | 配置 location 和自定义 loader。 |
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class) (1)
class CustomLoaderXmlApplicationContextTests {
// class body...
}
1 | 配置 location 和自定义 loader。 |
@ContextConfiguration 支持继承超类或封闭类声明的资源 locations 或配置类,以及上下文初始化器。 |
有关详细信息,请参阅上下文管理、@Nested
测试类配置和 @ContextConfiguration
javadocs。