My src/test/
folder includes both unit and functional tests. The classpath of functional tests has the word cucumber
, whereas the unit tests do not. So, how can I run the unit tests only?
Thank you very much.
PS : I know it is easy to use the "include" logic to select tests. For example, to only run the functional tests in my case, I can simply use this./gradlew test -Dtest.single=cucumber/**/
However, I don't know how to exclude tests in a simple way.
BTW, I am using gradle 1.11.
Credit : This answer is inspired by JB Nizet's answer. It is posted because it is more direct to my question.
To run the unit tests only, create a new task like this:
task unitTest( type: Test ) {
exclude '**/cucumber/**'
}
This way we have:
run all tests: ./gradlew test
run all unit tests: ./gradlew unitTest
run all functional tests: ./gradlew test -Dtest.single=cucumber/**/
The documentation of the task explains it, with an example and everything:
apply plugin: 'java' // adds 'test' task
test {
// ...
// explicitly include or exclude tests
include 'org/foo/**'
exclude 'org/boo/**'
// ...
}
You can exclude this based on the external system properties.
-Dtest.profile=integration
and in build.gradle
test {
if (System.properties['test.profile'] != 'integration') {
exclude '**/*integrationTests*'
}
}
You can also define a custom flag in your build.gradle
:
test {
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
Then in the command-line:
gradle test -PexcludeTests=com.test.TestToExclude
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.