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

Micronaut Mongo测试资源未启动Docker容器,会话支持报错求助

修复Micronaut Test Resources未自动启动Mongo容器及会话支持问题

1. 确认Test Resources插件的正确配置

先检查根模块和测试所在子模块的build.gradle.kts配置:

  • 根build.gradle.kts需添加插件依赖(注意版本和你的Micronaut版本匹配):
plugins {
    id("io.micronaut.testresources") version "4.1.0" apply false
}
  • 测试所在子模块(比如quests模块)的build.gradle.kts必须应用该插件:
plugins {
    id("io.micronaut.testresources")
}

2. 指定支持会话的Mongo容器版本

默认的Mongo容器版本可能是旧版单节点(默认禁用会话支持),在gradle.properties中添加:

testcontainers.mongodb.image=mongo:6.0

或者在子模块的build.gradle.kts里显式配置:

testresources {
    containers {
        named("mongodb") {
            image.set("mongo:6.0")
        }
    }
}

3. 修正application-test.yaml的Mongo配置

确保测试配置没有硬编码固定Mongo地址,让Test Resources自动注入容器地址:

mongodb:
  uri: ${MONGO_URI:`mongodb://localhost:27017`}

注意:不要手动写死地址,否则会绕过Test Resources的容器自动管理逻辑

4. 验证子模块的依赖与可见性

如果测试在子模块中,需确认:

  • 子模块已在根settings.gradle.kts中正确声明
  • 子模块build.gradle.kts添加了必要的测试依赖:
testImplementation("io.micronaut.mongodb:micronaut-mongo-reactive")
testImplementation("io.micronaut.testresources:micronaut-testresources-mongodb")

5. 排查Docker权限问题

确保运行测试的用户拥有Docker操作权限,执行以下命令验证:

docker run --rm mongo:6.0 mongod --version

如果出现权限错误,将用户加入docker组:

sudo usermod -aG docker $USER

执行后重新登录系统生效。

6. 临时绕过会话检查(应急方案)

如果以上步骤暂时无法生效,可临时在application-test.yaml中禁用会话支持:

mongodb:
  options:
    session:
      enabled: false

此为临时方案,优先推荐让Test Resources正确启动支持会话的Mongo容器


内容的提问来源于stack exchange,提问作者goncharovmvdev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:25:39