У меня есть тестовая установка огурца с пружинной загрузкой.Существует большое количество интеграционных тестов, которые требуют времени для запуска.Поскольку они совместно используют базу данных, новый многопоточный режим в cucumber 4+ не работает (как и ожидалось).
В идеале это будет работать и в Junit.
Для каждого теста я хотел бысоздайте динамический источник данных с новым экземпляром базы данных / источника данных, который тест может использовать независимо от других, что позволит ему работать в многопоточном режиме (и использовать 12 имеющихся у меня ядер).
Я пробовал @Scope("cucumber-glue")
и @Scope("prototype")
в компоненте DataSource, но это приводит к org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'dataSource': Requested bean is currently in creation: Is there an unresolvable circular reference?
.
Если я использую область действия прототипа, метод создания компонента вызывается каждый раз, но выдает эту ошибку, как и область привязки.
Я также добавил @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
к классам и методам без области действия, но, похоже, это ничего не дает.
Есть ли способ, которым я могу либо: 1. создать новый источник данных для каждого тестаи есть ли Hibernate для создания таблиц?2. объединить набор источников данных, которые могут быть использованы в тестах?3. Заполнить / повторно инициализировать контекст соответствующим образом?
Побочным следствием этого является то, что я не верю, что мой контекст воссоздается должным образом между тестами для других экземпляров области видимости.
@Configuration
public class H2DynamicDataSource {
@Autowired
private Environment env;
@Bean
@Scope("prototype")
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.build();
}
}
Ура R