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

如何在Quarkus中创建用于测试的嵌入式MongoDB数据库?

解决方案

1. 优先使用Quarkus官方MongoDB测试组件(推荐)

步骤1:引入测试依赖

Maven 依赖配置:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-test-mongodb</artifactId>
    <scope>test</scope>
</dependency>

Gradle 依赖配置:

testImplementation "io.quarkus:quarkus-test-mongodb"

步骤2:清理无效测试配置

删除test/resources/application.properties里你手动编写的quarkus.mongodb.connection-string配置行,Quarkus测试组件会自动启动MongoDB实例、自动注入可用的连接串,不需要手动指定端口。

步骤3:适配低版本Quarkus

如果你的Quarkus版本低于2.8,需要在测试类上手动添加测试资源注解:

@QuarkusTest
@QuarkusTestResource(MongoDBTestResource::class) // 新增这行
@TestMethodOrder(MethodOrderer.OrderAnnotation::class)
class ControllerTest {
    // 原有代码保持不变
}

2. 无Docker环境使用嵌入式MongoDB方案

如果你本地没有Docker环境,不想用Testcontainers启动MongoDB容器,可以用flapdoodle嵌入式MongoDB:

步骤1:引入依赖

<dependency>
    <groupId>de.flapdoodle.embed</groupId>
    <artifactId>de.flapdoodle.embed.mongo</artifactId>
    <version>4.12.0</version>
    <scope>test</scope>
</dependency>

步骤2:补充测试配置

在test/resources/application.properties中添加配置:

%test.quarkus.mongodb.connection-string=mongodb://localhost:19345/db-test
quarkus.mongodb.database=db-test
# 指定嵌入式Mongo启动端口为19345,和你的连接串配置对齐
de.flapdoodle.mongodb.embedded.port=19345

3. 代码检查项

你现在的MockAccountRepository上的@Mock注解如果是用来替代生产环境的AccountRepository实现,需要确认生产环境的Repository没有加@Primary等高优先级注解,避免测试时注入错误的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:30:01