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



我正在将gradle与testng一起使用。我有这个build.gradle:

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

例如,如何仅运行命令行的tests1.xml?

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

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

您可以指定带有默认值的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构建文件

如果要通过命令行

gradlew test -PsuiteFile=test.xml

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。

在src/test/java下必须具有@test方法

Edite Build.gradle添加此

def hasSuite = project.hasProperty("suite")
def hasSuitePath = project.hasProperty("suitepath")
test {
    useTestNG() {
        dependsOn cleanTest
        useDefaultListeners = true
        if( hasSuite) {
            def suiteName = project.property('suite')
            suites "src/test/resources/${suiteName}"
        }
        if( hasSuitePath ){
            def suitepath = project.property("suitepath")
            suites "${suitepath}"
        }
    }
}

然后

./gradlew test -Psuite=login.xml
./gradlew test -Psuitepath=src/main/resources/login.xml

您只需在测试任务中执行此操作:

def suite = project.properties.getOrDefault("suite", "testng.xml")
        useTestNG() {
            suites "src/test/resources/suites/${suite}"
        }

这意味着您对属性套件具有默认值。如果您需要覆盖它,请致电。

gradle clean test -Psuite=suiteName.xml

如果您不需要 - 致电:

gradle clean test

和默认属性值将被使用

最新更新