H2数据库和Flyway的Spring Boot应用程序测试无法播种

时间:2018-04-03 15:55:30

标签: java hibernate spring-boot h2 flyway

我有一个应用程序,我试图使用H2进行测试。

这是我的application.yml:

spring:
  datasource:
    url: jdbc:h2:mem:appdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
  flyway:
    url: jdbc:h2:mem:appdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
    user: "root"
    password: ""
    locations: classpath:/db/migration, classpath:/db/seed

Flyway成功运行迁移(或者至少看起来如此),并且成功创建了表,如启动所示:

2018-04-03 08:47:42.956  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 0
...

甚至看起来我的种子正在“工作”:

2018-04-03 08:47:43.162  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" with repeatable migration Seed sample

它告诉我它有效:

2018-04-03 08:47:43.188  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 18 migrations to schema "PUBLIC" (execution time 00:00.283s)

我的SQL文件是用PostgreSQL的SQL方言编写的。但是,我已经读过,在H2Dialect上留下休眠是好的。

当测试开始运行时,在测试完成运行时会出现数据库中没有任何内容,因此测试失败。

我的想法是H2在测试结束前关闭了数据库,但这对我来说似乎很奇怪。种子和桌子工作正常。

我能做些什么来验证一切在这里工作,还是我尚未尝试的选项?

1 个答案:

答案 0 :(得分:0)

尝试将Flyway架构设置为您的数据库名称:

flyway:
  schemas: appdb