3

在 quakus 项目中,我仅使用以下配置成功设置了测试容器:

%test.quarkus.datasource.driver=org.testcontainers.jdbc.ContainerDatabaseDriver
%test.quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQL9Dialect
%test.quarkus.datasource.url=jdbc:tc:postgresql:11:///dbname?TC_INITSCRIPT=file:my-file.sql

这太容易了。

但是,当我测试实体的删除时,我想在每次测试之前执行初始化脚本,即使用初始数据库开始每个测试。

知道如何实现吗?

我还通过从测试类创建 PostgreSQLContainer 进行了测试,以便根据需要管理其生命周期。问题是容器端口值是随机的,我需要在quarkus配置中设置但是不起作用(似乎来不及了:“连接到127.0.0.1:6432被拒绝”)。我是这样做的:

@Testcontainers
@QuarkusTest
class MyTest {

  class MyPostgreSQLContainer(imageName: String) : PostgreSQLContainer<MyPostgreSQLContainer>(imageName)

  companion object {

    @Container
    val postgres = MyPostgreSQLContainer("postgres:11")
      .withDatabaseName("integtest")
      .withUsername("postgres")
      .withPassword("pwd")
      .withExposedPorts(5432)

    @BeforeAll
    @JvmStatic
    internal fun beforeAll() {

      postgres.start()
      System.setProperty("QUARKUS_DATASOURCE_JDBC_URL", "jdbc:postgresql://127.0.0.1:${postgres.firstMappedPort}/kpi_integtest");
      println("BeforeAll init() method called")
    }

  }

使用 application.properties 配置:

quarkus.datasource.jdbc.url=jdbc:postgresql://127.0.0.1:6432/integtest
4

0 回答 0