正如 duffymo 所暗示的,Spring TestContext Framework (TCF) 假定字符串位置默认位于类路径中。有关详细信息,请参阅ContextConfiguration的 JavaDoc 。
但是请注意,您也可以使用 Spring 的资源抽象(即,通过使用“file:”前缀)在文件系统中指定资源的绝对路径或相对路径。您可以在 Spring 的modifyLocations()方法的 JavaDoc 中找到详细信息AbstractContextLoader
。
例如,如果您的 XML 配置文件位于"src/main/webapp/WEB-INF/spring-config.xml"
项目文件夹中,您可以将位置指定为相对文件系统路径,如下所示:
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring-config.xml")
作为替代方案,您可以将 Spring 配置文件存储在类路径中(例如,src/main/resources
),然后通过 Spring MVC 配置中的类路径引用它们——例如:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring-config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
使用这种方法,您的测试配置将看起来像这样(注意表示资源位于类路径的根目录中的前导斜杠):
@ContextConfiguration("/spring-config.xml")
您可能还会发现参考手册中的带有 XML 资源的上下文配置部分很有用。
问候,
山姆
(Spring TestContext 框架的作者)