首页 > 解决方案 > 并行运行 gradle spock 测试任务

问题描述

在我的build.gradle我有以下测试任务

task test1(type: Test) {
    ignoreFailures true
    testLogging {
        events 'started', 'passed', 'skipped', 'failed'
        exceptionFormat "full"
        showStandardStreams = true

        afterSuite { desc, result ->
            if (!desc.parent) { // will match the outermost suite
                failedTest += result.failedTestCount
            }
        }
    }
    include "org/company/project/test/Test1.class"
}

task test2(type: Test) {
    ignoreFailures true
    testLogging {
        events 'started', 'passed', 'skipped', 'failed'
        exceptionFormat "full"
        showStandardStreams = true

        afterSuite { desc, result ->
            if (!desc.parent) { // will match the outermost suite
                failedTest += result.failedTestCount
            }
        }
    }
    include "org/company/project/test/Test2.class"
}

我希望这两个测试并行运行,目前我使用这个命令来运行它们./gradlew cleanTest test1 test2 --info --rerun-tasks命令来运行它们。

我试过了--parallel--max-workers=3选项没有任何帮助。

标签: testinggradleparallel-processingspock

解决方案


Gradle 不支持在同一个项目中并行运行任务,除非您获得配置缓存命中,但这是一个孵化功能,它可能不适合您。

您有什么理由不在测试任务(文档)中使用分叉?

test {    
  maxParallelForks = 3
}

或所有测试任务

tasks.withType(Test) {
    maxParallelForks = 3
}

推荐阅读