Почему мой тест не может унаследовать расположение ContextConfiguration от своего родителя?


В интересах 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 я должен быть в состоянии наследовать местоположение родителя, но я не могу заставить его работать. Spring все еще ищет файл в папке по умолчанию (/org/my/ChildTest-context.xml) и блюет, когда не может его найти. Я попробовал следующее С нет удача:

  • конкретизация родительского класса
  • при добавлении пустой тест родительского класса
  • добавление введенного члена в родительский класс, а также
  • комбинации вышеперечисленных

Я на весеннем тесте 3.0.7 и JUnit 4.8.2.

1 7

1 ответ:

Удалите @ContextConfiguration(inheritLocations = true) из дочернего класса. inheritLocations по умолчанию имеет значение true.

Добавив аннотацию @ContextConfiguration(inheritLocations = true) без указания местоположения ,вы говорите, чтобы перейти к расширенному списку местоположений ресурсов, добавив контекст по умолчанию, который является /org/my/ChildTest-context.xml.

Попробуйте сделать что-нибудь вроде этого:

package org.my;

@RunWith(SpringJUnit4ClassRunner.class)
public class ChildTest extends BaseTest {

    @Inject
    private Foo myFoo;

    @Test
    public void myTest() {
          ...
    }
}