@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 文件。
|
2 | 引用 XML 文件。 |
以下示例显示一个引用类的 @ContextConfiguration
注解:
- Java
-
@ContextConfiguration(classes = TestConfig.class) (1) class ConfigClassApplicationContextTests { // class body... }
1 | Referring to a class.
|
2 | Referring to a class. |
作为声明资源位置或组件类的替代方案或补充方案,您可以使用 @ContextConfiguration
声明 ApplicationContextInitializer
类。以下示例演示了这种情况:
- Java
-
@ContextConfiguration(initializers = CustomContextInitializer.class) (1) class ContextInitializerTests { // class body... }
1 | Declaring an initializer class.
|
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 | 配置位置和自定义加载器。
|
2 | 配置位置和自定义加载器。 |
|
有关详细信息,请参阅 Context Management、@Nested
test class configuration和 `@ContextConfiguration`javadoc。