我想在Gradle脚本

时间:2016-03-09 11:41:08

标签: gradle soapui

我想在Gradle脚本中运行多个soapui项目。保留的SOAPUI项目文件位于以下位置: d:/soapui/projects/path/a.xml,b.xml等

将有任何Gradle脚本将进入上述位置并使用testrunner.bat逐个执行每个项目

1 个答案:

答案 0 :(得分:1)

作为@RaGe评论,您可以使用gradle SOAPUI plugin。但是,如果您正在寻找更加自定义的方式,则可以按照以下步骤进行操作。

您可以在 Gradle 上生成任务以执行 testrunner 来运行 SOAPUI 项目。然后,您可以为目录路径中的每个项目动态创建一个任务,并且使用.depends可以在调用特定任务时调用所有这些动态生成的任务。

您的 build.gradle 可能类似于:

// task to execute testrunner
class SoapUITask extends Exec {
    String soapUIExecutable = '/SOAPUI_HOME/bin/testrunner.bat' 
    String soapUIArgs = ''

    public SoapUITask(){
        super()
        this.setExecutable(soapUIExecutable)
    }

    public void setSoapUIArgs(String soapUIArgs) {
        this.args = "$soapUIArgs".trim().split(" ") as List
    }
}

// empty task wich has depends to execute the
// ohter tasks
task executeSOAPUI(){
}   

// get the path where are your projects
def projectsDir = new File(project.properties['soapuiProjectsPath'])

// create tasks dynamically for each project file
projectsDir.eachFile{ file ->
    if(file.name.contains('.xml')){
        // create the tasks
        task "executeSOAPUI${file.name}"(type: SoapUITask){
            println "execute project ${file.name}"
            soapUIArgs = ' "' +  file.getAbsolutePath() +'"'
        }

        // make the depends to avoid invoke each task one by one
        executeSOAPUI.dependsOn "executeSOAPUI${file.name}"
    }   
}

要调用它,您可以使用以下命令执行此操作:

gradle executeSOAPUI -PsoapuiProjectsPath=d:/soapui/projects/path/

请注意,-P用于传递项目目录的参数。

最近,我写了一个关于如何编写 gradle任务以运行 SOAPUI 的答案,如果你想要更多details here,那么也可以使用它。

希望这有帮助,