Java TestContainers共享数据库

Java TestContainers共享数据库,java,postgresql,jdbc,junit,testcontainers,Java,Postgresql,Jdbc,Junit,Testcontainers,我试图在JUnit5中有一个PostgreSQL TestContainer,我的所有测试类都扩展了它。目前,我的测试类中只有一个通过/通过了使用这个TestContainer的测试,其余的给我一个“无法获取JDBC连接”错误 这就是我的父类的外观: @Testcontainers @ContextConfiguration(initializers = SchemaMigrationApplicationTests.Initializer.class) public class SchemaM

我试图在JUnit5中有一个PostgreSQL TestContainer,我的所有测试类都扩展了它。目前,我的测试类中只有一个通过/通过了使用这个TestContainer的测试,其余的给我一个“无法获取JDBC连接”错误

这就是我的父类的外观:

@Testcontainers
@ContextConfiguration(initializers = SchemaMigrationApplicationTests.Initializer.class)
public class SchemaMigrationApplicationTests {

    public static final String BC_BASE_DOMAIN = "proxy-si.broadcloudpbx.net";
    public static final String EDOS_PROFILE = "asdf1234";
    public static final Region COUNTRY_REGION = Region.INT;

    private static final String DATABASE_NAME = "postgres";
    private static final String DATABASE_PASSWORD = "postgres";
    private static final String DATABASE_USERNAME = "username";

    @Container
    public static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
            .withDatabaseName(DATABASE_NAME)
            .withPassword(DATABASE_PASSWORD)
            .withUsername(DATABASE_USERNAME)
            .withReuse(true);

    static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
        public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
                TestPropertyValues.of(
                    "spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(),
                    "spring.datasource.username=" + postgreSQLContainer.getUsername(),
                    "spring.datasource.password=" + postgreSQLContainer.getPassword()).applyTo(configurableApplicationContext.getEnvironment());
            
        }
    }
}
@Testcontainers
@ContextConfiguration(initializers=SchemaMigrationApplicationTests.Initializer.class)
公共类SchemaMigrationApplicationTests{
公共静态最终字符串BC_BASE_DOMAIN=“proxy si.broadcloudpbx.net”;
公共静态最终字符串EDOS_PROFILE=“asdf1234”;
公共静态最终区域国家/地区=Region.INT;
私有静态最终字符串数据库\u NAME=“postgres”;
私有静态最终字符串数据库\u PASSWORD=“postgres”;
私有静态最终字符串数据库\u USERNAME=“USERNAME”;
@容器
公共静态PostgreSQLContainer PostgreSQLContainer=(PostgreSQLContainer)新的PostgreSQLContainer()
.withDatabaseName(数据库名称)
.withPassword(数据库密码)
.withUsername(数据库\用户名)
.重复使用(真实);
静态类初始值设定项实现ApplicationContextInitializer{
公共无效初始化(ConfigurableApplicationContext ConfigurableApplicationContext){
TestPropertyValue.of(
“spring.datasource.url=“+postgreSQLContainer.getJdbcUrl(),
“spring.datasource.username=“+postgreSQLContainer.getUsername(),
“spring.datasource.password=“+postgreSQLContainer.getPassword()).applyTo(configurableApplicationContext.getEnvironment());
}
}
}

我只是让我的测试类扩展SchemaMigrationApplicationTests。我还尝试使用静态方法并在此父类中对我的容器调用.start(),但没有成功。

我认为您不需要重用选项。如果您的字段是静态的,并且Testcontainers,那么容器也应该被删除。你们能试试吗?我认为你们不需要一个重用选项,若你们的字段是静态的和Testcontainers,那个么容器也应该被删除。你能试试吗?