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
相关产品推荐
相关产品推荐

