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

Quarkus v3.3集成MongoDB的集成测试配置及报错解决

问题解决与集成测试配置方案

一、修复"No RestClientBuilderResolver implementation found!"错误

这个错误的核心原因是测试类路径中缺少REST Client Reactive的测试支持依赖,或是未通过Quarkus测试注解正确初始化上下文。

解决步骤:

  1. 在pom.xml中添加测试依赖:
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-rest-client-reactive</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-junit5</artifactId>
    <scope>test</scope>
</dependency>
  1. 确保测试类添加@QuarkusTest注解,该注解会自动初始化Quarkus测试上下文,加载必要的Resolver实现:
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;

@QuarkusTest
public class MyRestServiceIT {
    // 测试代码逻辑
}

二、Quarkus 3.3 + MongoDB Panache 完整集成测试配置

1. 完整依赖配置(pom.xml片段)

在现有依赖基础上,补充测试核心依赖:

<!-- 测试核心依赖 -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-junit5</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-test-mongodb</artifactId>
    <scope>test</scope>
</dependency>
<!-- 容器化测试依赖(可选,用于验证镜像运行) -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-test-containers</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>mongodb</artifactId>
    <scope>test</scope>
</dependency>

2. 测试环境配置(src/test/resources/application.properties)

配置测试用MongoDB,Quarkus会自动适配嵌入式实例或Testcontainer:

# 测试MongoDB连接配置
quarkus.mongodb.connection-string=mongodb://localhost:27017
quarkus.mongodb.database=test-db
# 非容器化测试时禁用镜像自动构建
quarkus.container-image.build=false

3. 编写集成测试用例

示例1:REST服务与MongoDB交互测试

import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static org.hamcrest.CoreMatchers.is;

@QuarkusTest
public class UserResourceIT {

    @Test
    public void testCreateAndGetUser() {
        // 发送POST请求创建用户
        RestAssured.given()
                .contentType("application/json")
                .body("{\"name\": \"Test User\", \"email\": \"test@example.com\"}")
                .when().post("/api/users")
                .then().statusCode(201);

        // 验证GET请求返回数据正确性
        RestAssured.when().get("/api/users")
                .then().statusCode(200)
                .body("size()", is(1))
                .body("[0].name", is("Test User"));
    }
}

示例2:容器化应用验证测试(可选)

如果需要验证Docker镜像的运行状态,结合Testcontainers实现:

import io.quarkus.test.container.QuarkusContainer;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import static org.hamcrest.CoreMatchers.is;

@QuarkusTest
public class ContainerizedAppIT {

    @Test
    public void testContainerizedApp() {
        // 构建并启动Quarkus容器实例
        try (QuarkusContainer container = new QuarkusContainer()) {
            container.start();

            // 通过容器映射端口发送健康检查请求
            RestAssured.given()
                    .baseUri("http://" + container.getHost() + ":" + container.getFirstMappedPort())
                    .when().get("/api/health")
                    .then().statusCode(200)
                    .body("status", is("UP"));
        }
    }
}

4. 运行测试

执行Maven命令启动测试:

mvn clean verify

该命令会自动执行单元测试与集成测试,同时启动测试用MongoDB实例(依赖配置自动适配)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:22:47