簡體   English   中英

Spring Boot 2.1.0和Flyway 4.2.0-測試

[英]Spring Boot 2.1.0 and Flyway 4.2.0 - Tests

由於舊的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

您可以使用flyway-test-extensions ,它是Flyway的一個庫,旨在允許在Spring中針對Flyway管理的數據庫進行測試,

您可以在此處查看項目的文檔以及一些用法示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM