Gradle中的参数化测试任务

时间:2015-03-18 11:12:14

标签: gradle build.gradle

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

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

test {
    systemProperties = [serviceName:serviceName]
}

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

gradle -PserviceName=SomeServiceName test

这确实有效,但我对此并不满意。只有已知数量的有效参数值,所以我想为用户预先定义这些参数值,理想情况下是单独的Gradle任务,例如:能够运行:

gradle testSomeService
gradle testSomeOtherService

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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