有没有办法在Quarkus测试之前强制执行import.sql?

时间:2019-11-11 15:54:17

标签: quarkus


我想在Quarkus测试中使用H2测试资源:

@QuarkusTestResource(H2DatabaseTestResource.class)

但是我需要数据库中有一些表。 尽管我已在其中放置了带有DDL的resources / import.sql,但测试失败,因为它在执行import.sql之前尝试使用配置中的表:

quarkus.security.jdbc.principal-query.sql=SELECT u.password, u.role FROM test_user u WHERE u.username=?

结果:

Caused by: org.h2.jdbc.JdbcSQLException: Table "TEST_USER" not found; SQL statement:
SELECT u.password, u.role FROM test_user u WHERE u.username=? [42102-197]

在Quarkus读取配置文件之前,有什么方法可以执行SQL?

1 个答案:

答案 0 :(得分:1)

您需要在JDBC连接字符串中包含INIT参数,并在其中包含对要执行的SQL脚本的引用。示例:

quarkus.datasource.url=jdbc:h2:tcp://localhost/mem:elytron_jdbc_test;DB_CLOSE_DELAY=-1;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:import.sql'

请参阅保护Quarkus with H2 Database的示例应用程序。