[英]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.