使用XML资源进行上下文配置

要使用XML配置文件为您的测试加载ApplicationContext,请使用@ContextConfiguration注解您的测试类,并使用包含XML配置文件元数据资源位置的数组配置locations属性。普通路径或相对路径(例如,context.xml)被视为相对于定义测试类的包的类路径资源。以斜杠开头的路径被视为绝对类路径位置(例如,/org/example/config.xml)。表示资源URL的路径(即,以classpath:file:http:等为前缀的路径)按原样使用。

  • Java

  • Kotlin

@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文件的列表。
@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文件的列表。

@ContextConfiguration通过标准Java value属性支持locations属性的别名。因此,如果您不需要在@ContextConfiguration中声明其他属性,您可以省略locations属性名的声明,并使用以下示例中所示的简写格式声明资源位置。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
@ContextConfiguration({"/app-config.xml", "/test-config.xml"}) (1)
class MyTest {
	// class body...
}
1 在不使用locations属性的情况下指定XML文件。
@ExtendWith(SpringExtension::class)
@ContextConfiguration("/app-config.xml", "/test-config.xml") (1)
class MyTest {
	// class body...
}
1 在不使用locations属性的情况下指定XML文件。

如果您从@ContextConfiguration注解中省略locationsvalue属性,TestContext框架将尝试检测默认的XML资源位置。具体来说,GenericXmlContextLoaderGenericXmlWebContextLoader根据测试类的名称检测默认位置。如果您的类名为com.example.MyTestGenericXmlContextLoader将从"classpath:com/example/MyTest-context.xml"加载您的应用程序上下文。以下示例展示了如何操作。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from
// "classpath:com/example/MyTest-context.xml"
@ContextConfiguration (1)
class MyTest {
	// class body...
}
1 从默认位置加载配置。
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from
// "classpath:com/example/MyTest-context.xml"
@ContextConfiguration (1)
class MyTest {
	// class body...
}
1 从默认位置加载配置。