Context Configuration with XML resources
要使用 XML 配置文件加载测试的 ApplicationContext,可以使用 @ContextConfiguration 注解测试类。locations 属性指定 XML 配置元数据文件的位置。可以将 locations 属性配置为包含文件路径数组,其中路径可以是绝对路径、相对路径或资源 URL。默认情况下,从 "classpath:{测试类名称}-context.xml" 加载 ApplicationContext。
要通过使用 XML 配置文件加载测试的 ApplicationContext
,请用 @ContextConfiguration
注释你的测试类,并将 locations
属性配置为一个包含 XML 配置元数据资源位置的数组。一个普通路径或相对路径(例如 context.xml
)被视为相对于定义测试类的包的类路径资源。以斜杠开头的路径被视为一个绝对的类路径位置(例如 ` /org/example/config.xml`)。一个表示资源 URL 的路径(即以 classpath:
, file:
, http:
, 等为前缀的路径)被 “照原样” 使用。
- Java
-
@ExtendWith(SpringExtension.class) // ApplicationContext will be loaded from "/app-config.xml" and // "/test-config.xml" in the root of the classpath @ContextConfiguration(locations = {"/app-config.xml", "/test-config.xml"}) (1) class MyTest { // class body... }
1 | 将 locations 属性设置为包含 XML 文件的列表。
|
2 | 将 locations 属性设置为包含 XML 文件的列表。 |
@ContextConfiguration
通过标准 Java value
属性支持 locations
属性的一个别名。因此,如果你不需要在 @ContextConfiguration
中声明其他属性,则可以省略 locations
属性名称的声明,并使用以下示例中演示的简写格式声明资源位置:
- Java
-
@ExtendWith(SpringExtension.class) @ContextConfiguration({"/app-config.xml", "/test-config.xml"}) 1 class MyTest { // class body... }
1 | 无需使用 locations 属性来指定 XML 文件。
|
2 | 无需使用 locations 属性来指定 XML 文件。 |
如果你从 @ContextConfiguration
注释中省略了 locations
和 value
属性,TestContext 框架将尝试检测一个默认 XML 资源位置。具体来说,GenericXmlContextLoader
和 GenericXmlWebContextLoader
根据测试类的名称检测一个默认位置。如果你的类名为 com.example.MyTest
,GenericXmlContextLoader
将从 "classpath:com/example/MyTest-context.xml"
加载你的应用程序上下文。以下示例展示了如何这样做:
- Java
-
@ExtendWith(SpringExtension.class) // ApplicationContext will be loaded from // "classpath:com/example/MyTest-context.xml" @ContextConfiguration (1) class MyTest { // class body... }
1 | 从默认位置加载配置。
|
2 | 从默认位置加载配置。 |