我有测试的gradle项目。测试分为两个包。我希望每个包都有测试任务。
我的项目是gradle:
project(":tests:my-project") {
ext {
drivers = ["phantomJs", "chrome"]
}
dependencies {
...
}
apply plugin: "groovy"
apply from: "gradle/osSpecificDownloads.gradle"
List suites = ['smoke', 'stress']
Map testPackages = ['smoke': 'packagename1.*', 'stress': 'packagename2.*']
drivers.each { driver ->
task "${driver}Test"(type: Test) {
reports {
html.destination = reporting.file("$name/tests")
junitXml.destination = file("$buildDir/test-results/$name")
}
outputs.upToDateWhen { false }
systemProperty "geb.build.reportsDir", reporting.file("$name/geb")
systemProperty "geb.env", driver
}
}
chromeTest {
dependsOn unzipChromeDriver
def chromedriverFilename = Os.isFamily(Os.FAMILY_WINDOWS) ? "chromedriver.exe" : "chromedriver" systemProperty "webdriver.chrome.driver", new File(unzipChromeDriver.outputs.files.singleFile, chromedriverFilename).absolutePath
}
phantomJsTest {
dependsOn unzipPhantomJs
def phantomJsFilename = Os.isFamily(Os.FAMILY_WINDOWS) ? "bin/phantomjs.exe" : "bin/phantomjs"
systemProperty "phantomjs.binary.path", new File(unzipPhantomJs.outputs.files.singleFile, phantomJsFilename).absolutePath
}
test {
dependsOn drivers.collect { tasks["${it}Test"] }
enabled = false
}
}
答案 0 :(得分:0)
您可以尝试这样做:
首先,创建2个任务,一个用于冒烟测试,一个用于压力测试。例如,我只会告诉你一个 - 烟雾测试。压力测试任务看起来都一样。
//this task will run all the smoke tests
task runSmokeTests() {
}
然后更改您的testPackages
值,以便Gradle可以使用
Map testPackages = ['smoke': 'packagename1/*', 'stress': 'packagename2/*']
然后迭代驱动程序并创建Test
类型的任务,与您的操作相同,但使用include
参数指向带有冒烟测试的包,在任务定义后生成{{1}任务取决于这个新创建的任务,如下所示:
runSmokeTests
从现在开始,您创建了至少2个任务:drivers.each { driver ->
Task smokeTestTask = task "${driver}SmokeTest"(type: Test) {
reports {
html.destination = reporting.file("$name/tests")
junitXml.destination = file("$buildDir/test-results/$name")
}
include testPackages.get('smoke')
outputs.upToDateWhen { false }
systemProperty "geb.build.reportsDir", reporting.file("$name/geb")
systemProperty "geb.env", driver
}
runSmokeTests.dependsOn smokeTestTask
}
和phantomJsSmokeTest
,每个任务仅包含自己的包。由于chromeSmokeTest
取决于它们,因此您可以运行它来运行所有冒烟测试。
如果您愿意,可以在runSmokeTests
中再添加一次迭代来迭代测试类型,并提供更多逻辑以使您的配置更加灵活。但是,恕我直言,这并不好,因为这个解决方案很难维护和理解,我不认为,你会有大量的测试类型。