Spring Boot 2.1.0 и Flyway 4.2.0 - Тесты - PullRequest
0 голосов
/ 09 декабря 2018

Мне нужно использовать 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

1 Ответ

0 голосов
/ 09 декабря 2018

Вы можете использовать flyway-test-extensions, которая является библиотекой от Flyway, предназначенной для тестирования весной с БД, управляемыми Flyway,

. Вы можете взглянуть на документ проекта здесь вместе с некоторыми примерами использования.

...