为了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中寻找文件。我已经尝试了以下方法,但是没有运气:
  • 使父类具体化
  • 向父类
  • 添加无操作测试
  • 一起将注入(inject)的成员添加到父类中
    上面的的
  • 组合

    我正在进行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() {
              ...
        }
    }
    

  • 09-06 13:47