Spring testcontainers Driver org.testcontainers.jdbc.ContainerDatabaseDriver声称不接受jdbcUrl。

在我的集成测试中使用了以下配置,我遇到了以下异常。

Driver org.testcontainers.jdbc.ContainerDatabaseDriver claims to not accept jdbcUrl, jdbc:postgresql://localhost:32864/test?loggerLevel=OFF

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = WebApplication.class)
@AutoConfigureMockMvc
@Testcontainers
@TestPropertySource(ResourceUtils.CLASSPATH_URL_PREFIX + "application-test.properties")
public abstract class AbstractIntegrationTest {

    @Autowired
    protected MockMvc mockMvc;

    @Container
    protected static PostgreSQLContainer<?> postgresqlContainer = new PostgreSQLContainer<>();

    @DynamicPropertySource
    static void postgresqlProperties(DynamicPropertyRegistry registry) {
        registry.add("spring.datasource.url", postgresqlContainer::getJdbcUrl);
        registry.add("spring.datasource.username", postgresqlContainer::getUsername);
        registry.add("spring.datasource.password", postgresqlContainer::getPassword);
    }

    @Test
    void contextLoads() {
        Assertions.assertThat(mockMvc).isNotNull();
        Assertions.assertThat(postgresqlContainer.isRunning()).isTrue();
    }
}

异常 postgresqlContainer.getJdbcUrl() 返回 jdbc:postgresql://localhost:32864/test?loggerLevel=OFF但它应该返回 jdbc:tc:postgresql://...,它缺少的是 tc 部分。

有什么解决办法吗?

硬编码一样。String.format("jdbc:tc:postgresql://localhost:%s/%s", postgresqlContainer.getFirstMappedPort(), postgresqlContainer.getDatabaseName()) 好像可以用

我到底做错了什么?

解决方案:

请看这里的橙色大警告。https:/www.testcontainers.orgmodulesdatabasesjdbc

你应该使用带有以下内容的JDBC URL tc: 前缀和 ContainerDatabaseDriver 或容器实例,具有 getJdbcUrl() 和原厂驱动(或者让系统帮你检测驱动),而不是两个都要。

给TA打赏
共{{data.count}}人
人已打赏
未分类

C++ varadic模板混合了值、数组和对象。

2022-9-8 22:55:25

未分类

在嵌套的<a>和<span>元素中出现意外的空白[重复]。

2022-9-8 23:06:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索