You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus原生镜像集成测试TestContainer数据源配置不生效问题

问题根因

配置不生效是两个机制共同导致的:

  • @QuarkusTestResource默认的配置注入范围仅覆盖运行测试用例的JVM进程,不会自动将start()方法返回的配置项,作为启动参数传递给提前构建完成的原生可执行文件cos-runner。原生镜像构建阶段已经将默认数据源配置(默认JDBC地址、quarkus/quarkus默认账号密码、default默认逻辑库)固化为默认启动参数。
  • 框架默认开启的DevServices能力,检测到原生应用启动时没有可用的数据源配置,会自动拉起一个默认配置的PostgreSQL测试容器供应用连接,也就是你日志里49318端口的那个实例;而你自定义NativeTestResources拉起的49320端口的PostgreSQL,仅在测试JVM进程内可见,根本没有被原生应用读取到。
修复方案

按以下步骤调整即可:

  1. 关闭测试环境下DevServices自动拉起数据源的逻辑,避免默认配置抢占优先级。在测试资源目录的application.properties中添加配置:
    quarkus.devservices.enabled=false
    
  2. 修改测试类上的@QuarkusTestResource注解,添加参数放开配置传递限制,让测试资源返回的配置可以注入到被测原生应用的启动参数中,修改后注解如下:
    @QuarkusIntegrationTest
    @QuarkusTestResource(value = NativeTestResources.class, restrictToAnnotatedType = false)
    

调整完成后重新执行测试,查看原生runner的启动命令,会发现已经携带了你自定义的JDBC连接串、账号密码参数,应用会正常连接你在测试资源中初始化的PostgreSQL容器,不会再自动拉起49318端口的默认数据库实例。

内容的提问来源于stack exchange,提问作者KilkaLosowychWyrazów

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:54:18