gpt4 book ai didi

java - 为什么我的测试不能从其父级继承其 ContextConfiguration 位置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:50 24 4
gpt4 key购买 nike

为了 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 docs 我应该能够继承 parent 的位置,但我无法让它工作。 Spring 仍在默认位置 (/org/my/ChildTest-context.xml) 中寻找文件,找不到时会 barfs。我试过以下但没有运气:

  • 具体化父类
  • 向父类添加空操作测试
  • 同时向父类添加注入(inject)成员
  • 上述的组合

我正在使用 spring-test 3.0.7 和 JUnit 4.8.2。

最佳答案

删除子类上的 @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() {
...
}
}

关于java - 为什么我的测试不能从其父级继承其 ContextConfiguration 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14403923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com