如何使用使用 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" })
我在 运行 我在 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" })