gradle - Gradle中的参数化测试任务

标签 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。有没有一种“不错”的方式来做到这一点?

最佳答案

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

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

现在,您对每个服务都有一个明确的测试任务。这些任务可以通过运行gradle tasks来发现:
Service Test tasks
------------------
serviceATest
serviceBTest
serviceCTest

关于gradle - Gradle中的参数化测试任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120516/

相关文章:

java - 如何从一个项目构建多个独立的 Gradle 项目?

安卓 gradle 构建 : Share library between parent and child

android - 程序类型已经存在 : com. google.common.util.concurrent.ListenableFuture

Android Studio 2错误:Configuration with name 'default' not found

android - Gradle Sync失败:没有这样的属性:Gradle版本对于类:JetGradlePlugin

video - Gradle任务assembleDebug在使用Firebase安装软件包 “youtube_player_flutter: ”时失败,出现退出代码1错误

java - 为什么 “api” 方法在 Gradle 4.4/Java 插件中不可用,而 “implementation” 可用?

android - 如何为我所有的 android 项目设置 gradle 属性?

android - 如何使用Android Studio重命名程序包?

java - 如何将 JAR 文件添加到现有的 gradle 项目?