@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。