I want to run multiple SOAPUI project xmls in Grad

2019-08-11 19:33发布

问题:

I want to run multiple soapui projects in Gradle script. The SOAPUI project files are kept is following location: d:/soapui/projects/path/a.xml, b.xml etc

Will be there any Gradle script that it will enter into the above mentioned location and execute the each project one by one using testrunner.bat

回答1:

As @RaGe comments you can use the gradle SOAPUI plugin. However if you're looking for a more custom way you can proceed as follows.

You can generate a task on Gradle to execute testrunner to run your SOAPUI projects. Then you can create dynamically one task for each project you've in a directory path, and using .depends you can make that all these dynamic generated tasks are called when you call the specific task.

Your build.gradle could be something like:

// 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}"
    }   
}

To invoke this you can do it using the follow command:

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

Note that -P is used to pass the parameter for projects dir.

Recently I wrote an answer on how to write gradle task to run SOAPUI which can be also util, if you want check more details here.

Hope this helps,



标签: gradle soapui