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
我有一些独立的测试代码(使用 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