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

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

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

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

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

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

1 ответ

Решение

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

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

}
Другие вопросы по тегам