Я работаю над приложением, в котором мы интенсивно используем интеграционные тесты, поскольку базовая структура, которую мы используем, работает в базе данных.Утилита проверки интеграции Spring для конфликтующих конфигурационных контекстов
У меня есть классы тестов с использованием конфигурации контекста класса, такие как это:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ConfigA.class)
public A_Test(){
}
Большинство тестов используют тот же контекст, как и выше. У нас более 200 таких тестов. Но в последнее время мы нуждались некоторые дополнительные настройки для некоторых случаев применения, а также, как это:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigA.class, ConfigB.class})
public B_Test(){
}
Проблема теперь, когда мы выполняем все тесты с Maven, или IDE бегунами, загруженного кэша для ConfigA больше не работает. Spring пытается воссоздать контекст для ConfigA, который терпит неудачу, потому что у нас уже настроена H2 DB, а Spring пытается создать схемы, таблицы которых не удается.
Чтобы преодолеть это, мы начали использовать @DirtiesContext для всех тестов. Результат превышает 1 час, что значительно снижает производительность разработчика.
Вопрос: возможно ли очистить контекст для тестов, таких как B_Test
? @DirtiesContext (ClassMode = AFTER_CLASS) не помогает, потому что порядок тестов не гарантируется (и действительно мы не хотим идти этим путем). Он терпит неудачу, когда тестируются тесты типа B_Test. То же самое для @DirtiesContext (ClassMode = BEFORE_CLASS) наоборот
Можно ли имитировать @DirtiesContext (ClassMode = AFTER_CLASS) и @DirtiesContext (ClassMode = BEFORE_CLASS) в то же время на кучу тестов?
Или есть ли другой способ решить эту проблему в целом?
То, что мы пытались до сих пор:
- JUnit Suites: не помогло ничего с контекстом весеннего
- ContextHierarchies: не помочь делу, что B_Type тесты также пачкает контексте
- Test Заказ: хорошо, что никто не очень рад реорганизации всех тестов, чтобы заставить его работать магически
Не могли бы вы добавить строку подключения? –