Использование 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 {
}