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

如何保持QuarkusIntegrationTest/原生镜像测试环境常驻高效开发测试

@QuarkusIntegrationTest常驻测试环境实现方案

完全可以实现,Quarkus本身原生支持该场景,不需要引入第三方工具,操作步骤如下:

  • 首先启动常驻的集成测试环境,在项目根目录执行命令:
    mvn quarkus:test -Dquarkus.test.integration-test=true -Dquarkus.test.hang-on-startup=true
    
    该命令会完整执行集成测试前置流程:拉起所有配置的Dev Services、初始化所有QuarkusTestResource、启动构建好的原生待测容器,所有组件就绪后不会自动触发测试执行,会持续保持运行状态,待测服务默认监听localhost:8080。
  • 编写测试用例时,新增一个专用测试profile跳过环境重复拉起逻辑,直接对接已运行的常驻环境:
    public class PersistentEnvProfile implements QuarkusTestProfile {
        @Override
        public Map<String, String> getConfigOverrides() {
            return Map.of(
                // 指定对接已启动的常驻服务地址
                "quarkus.http.test-host", "localhost",
                "quarkus.http.test-port", "8080",
                // 关闭Dev Services自动启动
                "quarkus.devservices.enabled", "false",
                // 跳过原生待测容器的生命周期管理
                "quarkus.test.integration-test.container-lifecycle", "skip"
            );
        }
    }
    
    测试类正常使用@QuarkusIntegrationTest注解,指定上述profile即可,测试逻辑编写方式和普通集成测试完全一致:
    @QuarkusIntegrationTest
    @TestProfile(PersistentEnvProfile.class)
    public class CustomApiIT {
        // 在此处编写你的自有API测试逻辑
        @Test
        public void testApiReturn() {
            // 测试逻辑直接请求常驻环境接口,无额外启动开销
        }
    }
    
  • 调试测试用例时,直接单独运行对应测试类/测试方法即可,执行过程不会重复拉起任何环境资源,请求会直接打到常驻的测试环境上,单次测试执行耗时和普通单元测试基本一致。

注意:仅当你修改了业务代码需要重新构建原生镜像、或者调整了Dev Services/TestResource配置时,才需要停掉当前常驻环境重新执行启动命令刷新环境;日常编写、调整测试用例逻辑的过程全程不需要重启环境。

  • 额外提效点:常驻环境启动后,你可以直接用接口调试工具访问http://localhost:8080/q/health确认服务状态,提前手动验证接口逻辑后再编写成测试用例,进一步减少无效测试执行次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:18:17