为了DRY的利益,我想在一个父类中定义ContextConfiguration,并让我的所有测试类都继承它,如下所示:
家长类:
package org.my;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/org/my/Tests-context.xml")
public abstract class BaseTest {
}
子类:
package org.my;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(inheritLocations = true)
public class ChildTest extends BaseTest {
@Inject
private Foo myFoo;
@Test
public void myTest() {
...
}
}
根据ContextConfiguration文档,我应该能够继承父级的位置,但是我无法使其正常工作。当找不到文件时,Spring仍在默认位置(
/org/my/ChildTest-context.xml
)和barfs中寻找文件。我已经尝试了以下方法,但是没有运气:上面的的
我正在进行3.0.7和JUnit 4.8.2的 Spring 测试。
最佳答案
删除子类上的@ContextConfiguration(inheritLocations = true)
。默认情况下,inheritLocations
设置为true。
通过添加@ContextConfiguration(inheritLocations = true)
注释而不指定位置,您将告诉Spring通过添加默认上下文/org/my/ChildTest-context.xml
扩展资源位置列表。
尝试这样的事情:
package org.my;
@RunWith(SpringJUnit4ClassRunner.class)
public class ChildTest extends BaseTest {
@Inject
private Foo myFoo;
@Test
public void myTest() {
...
}
}