Spring: запуск теста под несколькими профилями
Ситуация
В моём приложении два профиля: "production" и "dev". От профиля зависит, какая база данных используется. Также есть тесты, проверяющие корректность считывания из БД. Хотелось бы, чтобы эти тесты проверялись на обоих базах данных.
Вопрос
Существует ли способ сделать так, чтобы некоторые тесты прогонялись, как под профилем "production", так и под "dev"?
Моё текущее решение
Лучшее, что я пока придумал — это писать @Test-методы в абстрактных классах и к каждому классу делать по annotation-only одной реализации на профиль. Но выглядит это весьма громоздко.
abstract class SomeDBTest {
@Autowired SomeDBService database;
@Test
public void test() throws Exception {
... some code here
}
}
@ActiveProfiles("production")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class SomeDBProductionTest extends CommonDBTest {
}
@ActiveProfiles("dev")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class SomeDBDevTest extends CommonDBTest {
}
Источник: Stack Overflow на русском