2016-03-24 2 views
3

Предположим, у меня есть родительский тестовый класс следующим образом:Весна делает ContextConfiguration (...) наследованием от родительского @ContextConfiguration?

@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { MyCustomTestConfig.class }) 
public class MyParentTestclass { 

Тогда у меня есть дочерний класс, где я хочу, чтобы добавить Spring 3.2.3 name annotation attribute.

@ContextConfiguration(name=MyName) 
public class MyChildTestClass extends MyParentTestClass { 

Я по-прежнему хочу получить всю конфигурацию контекста от родителя, но не уверен, что это произойдет.

Мой вопрос: Весна делает ContextConfiguration (...) наследует от своего родителя @ContextConfiguration?

ответ

1

@ContextConfiguration Поддержка наследования из коробки.

@ContextConfiguration имеет свойство inheritLocations, который по умолчанию true и указывает, является ли ресурс местоположения или аннотированных классов из тестов суперкласса должен быть унаследован.

inheritLocations = истинные: Это означает, что аннотированный класс наследует местоположения ресурсов или аннотированные классы, определенное тестового суперкласс. В частности, местоположения ресурсов или аннотированные классы для данного тестового класса будут добавлены в список местоположений ресурсов или аннотированных классов, определенных тестовыми суперклассами. Таким образом, подклассы имеют возможность расширять список местоположений ресурсов или аннотированных классов.

Если для inheritLocations установлено значение false, места ресурса или аннотированные классы для аннотированного класса будут теневыми и эффективно заменять любые местоположения ресурсов или аннотированные классы, определенные суперклассами.

В следующем примере, в котором используются аннотированные классы, ApplicationContext для ExtendedTest будет загружен из классов конфигурации BaseConfig и ExtendedConfig в указанном порядке. Бобы, определенные в ExtendedConfig, могут поэтому переопределять те, которые определены в BaseConfig.

@ContextConfiguration(classes=BaseConfig.class) 
public class BaseTest { 
    // ... 
} 

@ContextConfiguration(classes=ExtendedConfig.class) 
public class ExtendedTest extends BaseTest { 
    // ... 
} 
Смежные вопросы