如何解决测试容器:在每个测试中执行TC_INITSCRIPT
在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。