【发布时间】:2022-01-23 14:57:38
【问题描述】:
我正在使用 TestContainers 的 PostgreSQLContainer 来测试 Spring 应用程序,并且我想将数据库配置为具有特定的架构和数据库名称。默认值为 db_name=test 和 schema=public。
是否可以编辑这些?那么,在哪里以及如何?
我有一个application.properties 文件:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
start() 方法的我的 PostgreSQLContainer 实现:
import org.testcontainers.containers.PostgreSQLContainer;
public class DefaultPostgresContainer extends PostgreSQLContainer<DefaultPostgresContainer> {
private static final String IMAGE_VERSION = "postgres:13";
private static DefaultPostgresContainer container;
private DefaultPostgresContainer() {
super(IMAGE_VERSION);
}
public static DefaultPostgresContainer getInstance() {
if (container == null) {
container = new DefaultPostgresContainer().withInitScript("init_postgresql.sql");
}
return container;
}
@Override
public void start() {
super.start();
System.setProperty("DB_URL", container.getJdbcUrl());
System.setProperty("DB_USERNAME", "my_test");
System.setProperty("DB_PASSWORD", "my_test");
}
@Override
public void stop() {
//do nothing, JVM handles shutdown
}
}
【问题讨论】:
-
您可以使用
withDatabaseName配置数据库名称。 Schema 是 PostgreSQL 的问题,而不是 testcontainers 的问题,因此您需要像使用“普通”数据库一样解决这个问题。
标签: java spring postgresql testcontainers