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

如何配置Quarkus(Gradle)识别integrationTest测试目录?

解决Quarkus + Gradle下自定义integrationTest源码集的识别问题

我之前迁移项目到Quarkus时也碰到过一模一样的问题——Quarkus的Gradle插件默认只认test和native-test这两个测试源码集,所以自定义的integrationTest目录会被它忽略,导致你看到的那个报错。下面是我验证过的完整配置方案,一步步帮你解决:

1. 先修正你的源码集配置

你原来的配置里把integrationtest/resources加到了main的resources里,这会导致集成测试的资源被打包到主程序里,显然不对。应该给integrationTest源码集单独配置java和resources目录:

sourceSets {
    integrationTest {
        // 指定集成测试的java源码目录
        java.srcDir file("src/integrationtest/java")
        // 指定集成测试的资源目录
        resources.srcDir file("src/integrationtest/resources")
        // 依赖主代码和测试代码的输出,方便复用工具类
        compileClasspath += sourceSets.main.output + sourceSets.test.output
        runtimeClasspath += sourceSets.main.output + sourceSets.test.output
    }
}

2. 创建Quarkus兼容的集成测试任务

Quarkus有专门的测试任务类型,用来处理集成测试的生命周期(比如启动应用、注入依赖等)。我们需要创建一个类型为QuarkusIntegrationTest的任务(如果你的集成测试需要启动完整应用),或者QuarkusTest(如果是不需要启动应用的轻量集成测试):

// 创建集成测试任务,指定Quarkus的任务类型
task integrationTest(type: io.quarkus.gradle.tasks.QuarkusIntegrationTest) {
    description = "运行项目集成测试"
    group = "verification"
    // 指定测试类的输出目录
    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    // 指定集成测试的类路径
    classpath = sourceSets.integrationTest.runtimeClasspath
    // 确保集成测试在单元测试之后运行
    mustRunAfter test
}

// 让check任务依赖集成测试,执行gradle check时会自动跑集成测试
check.dependsOn integrationTest

3. 关键:告诉Quarkus插件识别你的integrationTest源码集

这一步是解决报错的核心——Quarkus默认只扫描test和native-test的测试类,所以我们需要显式把integrationTest源码集加入到它的扫描列表中:

quarkus {
    testSources {
        // 添加自定义的集成测试源码集
        sourceSets.integrationTest
    }
}

为什么这样配置能解决问题?

你看到的报错本质是Quarkus的测试扫描逻辑只关注它默认的几个目录,通过quarkus.testSources配置,我们告诉Quarkus插件:除了默认的测试目录,还要扫描integrationTest源码集下的测试类。同时,通过指定QuarkusIntegrationTest任务类型,确保集成测试能享受到Quarkus的测试支持(比如依赖注入、应用启动管理等)。

额外注意事项

  • 确保你的目录结构和配置里的路径一致:比如配置里是src/integrationtest/java,你的实际目录也要是小写的integrationtest(如果是大写的integrationTests,要对应修改配置里的路径)。
  • 如果你使用的是Quarkus 3.x和Gradle 7+,上述配置完全兼容;如果是更旧的版本,可能需要调整任务类型为QuarkusTest,但核心的testSources配置逻辑是一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:43:12