Почему мой тест не может унаследовать расположение 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 ответ:
Удалите
@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() { ... } }