Hi, guys! I need your advice.
I have 2 test folders:
\src\test\groovy\tests\ui
\src\test\groovy\tests\api
And have 2 tasks in Gradle:
task uiTest(type: Test) {
doFirst {
include "**/ui/${System.getProperty("testPackage", "")}"
exclude "**/api/*"
}
maxParallelForks = 4
forkEvery = 4
testLogging.showStandardStreams = true
}
task apiTest(type: Test) {
doFirst {
include "**/api/${System.getProperty("testPackage", "")}"
exclude "**/ui/*"
}
maxParallelForks = 4
forkEvery = 4
testLogging.showStandardStreams = true
}
I can easily execute one particular test OR all tests in one folder without any execution issues, example for ui tests:
gradlew.bat "-DtestPackage=/" clean uiTest -b build.gradle
gradlew.bat "-DtestPackage=/Ui1Spec*" clean uiTest -b build.gradle
So, I have 2 questions:
1. How can I execute more than 1 test simultaneously for one testPackage, but not all tests from testPackage?
For example: in
'\src\test\groovy\tests\ui'
I have 100 tests, but I need to execute only
'Ui1Spec', 'Ui5Spec', 'Ui17Spec' and
'UiRegression78Spec'
2. How can I execute tests by Junit5 tag?
Let me explain: previously I was working on another framework and we used Selenide+JUnit5, it was very easy to mark test by annotation
and then execute only tests which were marked:
I was trying to create gradle task with this closure:
useJUnitPlatform {
includeTags 'regression' //or System.getProperty('tag') to make it generic
}
Found it
here but it doesn`t work with
Spock/Geb, maybe because test classes doesn`t contain '
Test' suffix?
FYI my dependencies:
gebVersion = '3.4'
junitVersion = '5.6.1'
spockVersion = '1.2-groovy-2.5'
groovyVersion = '2.5.10'
compile "org.gebish:geb-spock:$gebVersion"
compile "org.codehaus.groovy:groovy-all:$groovyVersion"
compile "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
compile "org.codehaus.groovy:groovy-all:$groovyVersion"
compile "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
testCompile("org.spockframework:spock-core:$spockVersion") {
exclude group: "org.codehaus.groovy"
}
Thanks in advance!