Мне нужно использовать Flyway 4.2.0 в моем проекте из-за старой базы данных Oracle.В Spring Boot 2.1.0 Flyway включен в Spring Core, поэтому мне нужно создать Бин Flyway программно.
@Bean(initMethod = "migrate")
Flyway flyway() {
Flyway flyway = new Flyway();
flyway.setBaselineOnMigrate(true);
flyway.setDataSource(baseUrl, username, password);
return flyway;
}
Проблема в том, как это сделать в тестах ?Я бы хотел запустить тесты для базы данных в памяти, , поэтому я включаю application.yml в test / resources.Но тогда боб Flyway не найден.Когда я удаляю application.yml из test / resources, он работает нормально, но свойства читаются из application.yml из main / resources.Я попытался изменить тест, чтобы он не был @SpringBootTest, я могу создать bean-компонент Flyway вручную, но после установки @TestConfiguration мне нужно создать все бины вручную, а не только Flyway.Как это сделать, просто создать бин Flyway вручную, а все остальные оставить Spring Injection?
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class SomeTest {
@Autowired
private SomeService someService;
@Test
public void test(){
String helloString = someService.hello();
}}
Демонстрационный проект можно найти здесь: https://github.com/troger19/demo.git