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

如何通过Gradle命令运行指定目录下的单个及多个集成测试?

解决Gradle集成测试执行问题及命令用法

第一步:让Gradle识别testsuites目录的集成测试

默认Gradle的test任务仅扫描标准测试目录(如src/test/java),你的testsuites目录不在默认范围内,需先在项目根目录的build.gradle(或build.gradle.kts)中配置集成测试源集与任务:

Groovy DSL 配置示例

sourceSets {
    integrationTest {
        java {
            srcDir file('testsuites') // 指定testsuites为集成测试源目录
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
        }
    }
}

task integrationTest(type: Test) {
    description = 'Runs integration tests.'
    group = 'Verification'
    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    classpath = sourceSets.integrationTest.runtimeClasspath
    reports {
        html.required = true // 生成HTML测试报告
        junitXml.required = true // 生成JUnit XML报告
    }
}

// 让check任务依赖集成测试,执行check时会同时运行单元测试与集成测试
check.dependsOn integrationTest

Kotlin DSL 配置示例

sourceSets {
    create("integrationTest") {
        java {
            srcDir("testsuites")
            compileClasspath += sourceSets.main.get().output + sourceSets.test.get().output
            runtimeClasspath += sourceSets.main.get().output + sourceSets.test.get().output
        }
    }
}

val integrationTest by tasks.registering(Test::class) {
    description = "Runs integration tests."
    group = "Verification"
    testClassesDirs = sourceSets["integrationTest"].output.classesDirs
    classpath = sourceSets["integrationTest"].runtimeClasspath
    reports {
        html.required.set(true)
        junitXml.required.set(true)
    }
}

tasks.check {
    dependsOn(integrationTest)
}

第二步:执行单个集成测试类

配置完成后,运行单个集成测试类(如com.x.y.aTest)的命令:

./gradlew integrationTest --tests com.x.y.aTest

注意:确保类名大小写与实际Java类一致(通常首字母大写,如ATest而非aTest)。

第三步:执行多个集成测试类

方式1:指定多个全限定类名

用--tests参数逐个指定,逗号分隔或重复参数:

./gradlew integrationTest --tests com.x.y.aTest --tests com.x.y.bTest

方式2:按包路径批量匹配

匹配同一包下所有集成测试类:

./gradlew integrationTest --tests com.x.y.*

方式3:按类名规则匹配

匹配所有以Test结尾的集成测试类:

./gradlew integrationTest --tests "*Test"

或匹配前缀为a/b的测试类:

./gradlew integrationTest --tests "com.x.y.a*Test" --tests "com.x.y.b*Test"

注意事项

  • 测试类的全限定名(包+类名)必须完全正确,包括大小写
  • 多模块项目需在对应子项目中配置集成测试源集,执行时可指定子项目任务,如:moduleName:integrationTest --tests ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:55:42