从命令行使用Gradle运行特定的TestNG XML测试套件?

时间:2017-04-25 09:40:32

标签: gradle testng

我正在使用Gradle和TestNG。我有这个build.gradle:

useTestNG() {
        useDefaultListeners = true
        suites "src/test/resources/tests1.xml"
        suites "src/test/resources/tests2.xml"
   }
}

如何从命令行中仅运行tests1.xml?

3 个答案:

答案 0 :(得分:2)

您可以使用项目属性来添加/更改/ ...不同的套件。在你的例子中,你可能正在运行

gradlew test

运行两个套件。如果您在build.gradle中修改测试任务

def suite1 = project.hasProperty("suite1")
def suite2 = project.hasProperty("suite2")

test {
    useTestNG() {
        dependsOn cleanTest
        useDefaultListeners = true

        if(suite1) {
            suites "src/test/resources/simpleSuite.xml"
        }

        if(suite2) {
            suites "src/test/resources/advancedSuite.xml"
        }
    }
}

你可以这样选择套房

gradlew test -Psuite1
gradlew test -Psuite2
gradlew test -Psuite1 -Psuite2

答案 1 :(得分:1)

您可以使用默认值指定变量let suiteFile,并在testNG部分中使用它。例如:

ext{

    set suiteFile, default is 'testrun_config.xml'
    if (!project.hasProperty('suiteFile')) {
        suiteFile = 'testrun_config.xml'
    }
}

test {
    useTestNG() {
        dependsOn cleanTest
        useDefaultListeners = true
        suites "src/test/resources/"+suiteFile

    }
} 

参考qaf gradle build file

如果要通过命令行

gradlew test -PsuiteFile=test.xml

答案 2 :(得分:0)

在build.gradle中更新:

test {
    useTestNG() {
        if (project.hasProperty('suite1')) { suites './src/test/suite1.xml' }
        if (project.hasProperty('suite2')) { suites './src/test/suite2.xml' }
    }
}

使用命令gradlew test -Psuite1运行suite1,并同样为suite2更新。