테스트가 포함 된 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
}
}
다음과 같이 시도 할 수 있습니다.
먼저, 연기 테스트와 스트레스 테스트를위한 2 개의 작업을 만듭니다. 예를 들어 연기 테스트 중 하나만 보여 드리겠습니다. 스트레스 테스트 작업은 동일하게 보입니다.
//this task will run all the smoke tests
task runSmokeTests() {
}
그런 다음 testPackages
Gradle에서 사용할 수 있도록 값을 변경하십시오 .
Map testPackages = ['smoke': 'packagename1/*', 'stress': 'packagename2/*']
그런 다음 드라이버를 반복하고 Test
유형의 작업을 만듭니다 .했던 것과 동일하지만 include
스모크 테스트가있는 패키지를 가리키는 매개 변수를 사용하여 작업 정의 후 다음 runSmokeTests
과 같이 새로 만든 작업에 따라 작업을 만듭니다 .
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
}
지금부터 최소 2 개의 작업을 만들었습니다. phantomJsSmokeTest
및 chromeSmokeTest
, 각각 자체 패키지 만 포함합니다. runSmokeTests
둘 다에 의존 하기 때문에 모든 연기 테스트를 실행하기 위해 실행할 수 있습니다.
원하는 경우 drivers.each
테스트 유형을 반복하기 위해 내부 에 반복을 하나 더 추가 하고 구성을 더욱 유연하게 만들기 위해 더 많은 논리를 제공 할 수 있습니다. 그러나 IMHO는 좋지 않습니다.이 솔루션은 유지 관리 및 이해가 어려울 수 있기 때문에 많은 양의 테스트 유형을 갖게 될 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다