Spring Boot 2.1.0和Flyway 4.2.0-测试

时间:2018-12-09 11:40:00

标签: java spring-boot flyway

由于旧的Oracle DB,我需要在项目中使用 Flyway 4.2.0 。在Spring Boot 2.1.0中,Flyway包含在Spring Core中,因此我需要以编程方式创建Flyway Bean。

@Bean(initMethod = "migrate")
Flyway flyway() {
    Flyway flyway = new Flyway();
    flyway.setBaselineOnMigrate(true);
    flyway.setDataSource(baseUrl, username, password);
    return flyway;
}

问题是如何在测试中执行此操作?我想针对内存数据库运行测试,因此我将application.yml包含在测试/资源中。但是,然后没有找到Flyway bean。当我从测试/资源中删除application.yml时,它可以正常运行,但是属性是从main / resources中的application.yml中读取的。我试图将测试更改为@SpringBootTest,我可以手动创建Flyway bean,但是在放置@TestConfiguration之后,我需要手动创建所有bean,而不仅仅是Flyway。怎么做,只是手动创建Flyway bean,其余的都留给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 :(得分:0)

您可以使用flyway-test-extensions,它是Flyway的一个库,旨在允许在Spring中针对Flyway管理的数据库进行测试,

您可以查看项目的文档here,以及一些用法示例。