4

我有一个弹簧单元测试,它扩展了位于其他项目(tests-common)中的其他测试。我的上下文文件 (my-context.xml) 与 MyTest 位于同一个包中。基本上下文文件(“base-context.xml”)与 BaseTest 位于同一包中。这些文件看起来像:

@ContextConfiguration(locations = { "my-context.xml"}) 
public class MyTest extends BaseTest {

@ContextConfiguration(locations = { "base-context.xml" })
public abstract class BaseTest extends AbstractJUnit4SpringContextTests{

问题是:BaseTest找到“base-context.xml”但MyTest获取FileNotFoundException“my-context.xml”。如果我将 BaseTest 和 my-context.xml 文件移动到与 BaseTest 相同的包中 - 一切正常。可能是什么问题?

4

2 回答 2

3

在 spring 文档中查看: http: //static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-app-ctx

我会在 base-context.xml 前面添加“classpath:”关键字并定义相对于类路径的路径。您还应该将 xml 文件放在子目录 src/main/resources 中,而不是放在 java 文件旁边。

于 2012-12-03T16:29:01.213 回答
0

正如下面提到的,您可以像这样使用 classpath 关键字:

@ContextConfiguration(locations = { "classpath:**/base-context.xml" })
于 2015-09-11T16:12:08.120 回答