Gradle 中的参数化测试任务

Parametrized test tasks in Gradle

我有一些独立的测试代码(使用 Spock,以防万一),我需要将一个参数传递给它。

目前,我有一个最小的 build.gradle 脚本,它利用 gradle 将自动生成 test 任务这一事实,因此我将我的参数作为系统 属性 使用以下子句:

test {
    systemProperties = [serviceName:serviceName]
}

有了它,我可以将参数作为项目参数传递给 Gradle,例如

gradle -PserviceName=SomeServiceName test

这确实有效,但我不太满意。只有已知数量的有效参数值,所以我想为用户预先定义这些值,最好作为单独的 Gradle 任务,例如能够 运行:

gradle testSomeService
gradle testSomeOtherService

在我的 build.gradle 中,我将定义这些任务以将 属性 设置为给定值,然后调用 test。有 'nice' 方法吗?

您可以像这样设置不同的测试任务:

["serviceA", "serviceB", "serviceC"].each{ serviceName ->
    task("${serviceName}Test", type:Test){
        group = "Service Test"
        systemProperties = [serviceName:serviceName]    
    } 
}

现在每个服务都有一个明确的测试任务。 运行 gradle tasks:

可以发现这些任务
Service Test tasks
------------------
serviceATest
serviceBTest
serviceCTest