Использование Spring @ActiveProfile в интеграционных тестах

Я использую аннотации @Profile Spring для выбора между встроенными, автономными и управляемыми контейнерами источниками данных. Чтобы выбрать «встроенный», мои интеграционные тесты аннотированы для активации соответствующего профиля:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, classes={TestConfigWrapper.class})
@ActiveProfiles({"EMBEDDED_DB"})
public class SomeIntegrationTest {

Проблема в том, что я хотел бы переместить '@ActiveProfiles' в TestConfigWrapper, но это не подхватывается, и контекст приложения не загружает источники данных.

Это означает, что я должен аннотировать каждый интеграционный тест с помощью @ActiveProfile, что фактически означает, что он становится шаблоном интеграционного теста и может легко затруднить будущий рефакторинг.

Есть ли способ сделать это с помощью конфигурации Java?


person user1016765    schedule 26.08.2013    source источник
comment
@ContextConfiguration и @ActiveProfiles могут быть унаследованы, если я не ошибаюсь, поэтому, хотя и не гибко, вы можете поместить их в абстрактный класс и сделать так, чтобы каждый интеграционный тест расширял его.   -  person Yugang Zhou    schedule 06.09.2013
comment
Отлично - вот что я в итоге использовал: @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes={WebAppInitializer.class}) @ActiveProfiles({Profiles.EMBEDDED_DB})   -  person user1016765    schedule 06.09.2013


Ответы (1)


В комментарии от Hippooom используйте абстрактный класс для настройки тестов:

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={WebAppInitializer.class})
@ActiveProfiles({Profiles.EMBEDDED_DB})
public abstract class ProfiledIntegrationTest {

}
person user1016765    schedule 06.09.2013
comment
другой альтернативой было бы использовать это как аннотацию. Тогда вам просто нужно было бы использовать эту аннотацию в ваших тестовых классах. Оба должны иметь одинаковое влияние. - person eis; 09.10.2013