我正在将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
和默认属性值将被使用