我已经定义了一个测试任务,它使用TestNG来运行测试用例,并动态传递一个testNG套件文件列表,以便运行它。但是它似乎没有动态选择文件列表。
task runTestNG(type: Test) {
doFirst {
if(project(':testNG').hasProperty("testJerseyFiles")) {
ext.ngFiles = project.property("testJerseyFiles")
List testFiles = ngFiles as List
if(testFiles != null && testFiles.size() != 0 ) {
println "++++++++If : runTestNG++++++++++++++++++++++++++++"
testFiles.each { test ->
println "${test}"
}
}
} else {
println "++++++++Else : runTestNG++++++++++++++++++++++++++++"
}
}
useTestNG() {
if(project(':testNG').hasProperty("testJerseyFiles")) {
ext.ngFiles = project.property("testJerseyFiles")
List testFiles = ngFiles as List
if(testFiles != null && testFiles.size() != 0 ) {
listeners << 'org.testng.reporters.XMLReporter'
ignoreFailures = true
testFiles.each { test ->
println "******* ${test} ***************"
suites new File ("${test}")
//options.suites(new File ("${test}"))
}
}
} else {
// println "++++++++Else : runTestNG++++++++++++++++++++++++++++"
}
}
当我从另一个设置属性项目的任务(':testNG')运行此测试时。\ text.testJerseyFiles比我得到以下
++++++++If : runTestNG++++++++++++++++++++++++++++
output/suiteDir/Jersey_setNo1.xml
Running test: test method init(test1.Test1)
但是setNo1.xml有一个完全不同的类的列表。它似乎没有在“useTestNG”套件选项中选择文件,但它显然是在“doFirst”闭包中打印出变量。不确定我做错了什么。
我做的研究越多,似乎useTestNG的suite参数是在配置时设置的,因为project.ext.property是在执行时设置的,所以它总是找到“.hasProperty”为空并跳过如果条款。这导致它无论在类路径中找到什么都会进入测试列表。
有什么方法可以让这个套件动态地获取套件列表?