如何使用使用 Postgres 代码的 Flyway 迁移创建 DataJpaTest?

How to create DataJpaTest with Flyway migrations that use Postgres code?

我在 运行 我在 spring 引导应用程序中的测试遇到了一些困难,这些应用程序具有 flyway 来管理迁移,所有测试应用程序并失败,因为 flyway 尝试 运行迁移。

我已经安装了 H2 并使用 @DataJpaTest 尝试修复该问题,应用程序正常启动但崩溃,因为迁移文件中存在代码。示例:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE app_user (
    id uuid DEFAULT uuid_generate_v4() NOT NULL PRIMARY KEY,
    name varchar(200) NOT NULL
);

如您所见,所有迁移文件都有 postgres 语法,属性是 hibernate: ddl-auto: validate

那么有什么方法可以仅在测试中从 @Entity 创建 H2 table 而无需使用迁移或所有测试 运行 无需启动 spring 应用程序?如果为真,我可以在没有 spring 应用程序的情况下测试存储库吗?

谢谢

我建议在测试中禁用 Flyway 并启用 Hibernate 自动模式创建。

您可以使用属性来启用和禁用功能:

  • 禁用飞行路线:spring.flyway.enabled=false
  • 启用 Hibernate 架构创建 spring.jpa.hibernate.ddl-auto=create

例如

@SpringBootTest(properties = {
   "spring.flyway.enabled=false",
   "spring.jpa.hibernate.ddl-auto=create" })