Is there a way to only run a specific set of instrumentation tests in an Android Gradle project?
android, android-gradle-plugin, gradle, travis-ci
Solution
Since Android Gradle Plugin 1.3.0
Starting from version 1.3.0 you can (finally!) specify the arguments the Android Gradle Plugin have to pass to the `InstrumentationTestRunner`.
For example, if you want to run only the tests annotated with `@SmallTest` and ignore the others:
android {
//....
defaultConfig {
//....
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArgument "size", "small"
}
}
Old workaround Prior to plugin 1.3.0 is not possible to do that but I've found a little workaound. Basically I've annotated with the `@SmallTest` annotation the fast tests and using a custom subclass of the `InstrumentationTestRunner` I'm able to run just them and not the whole suite.
You can found the example code in this gist.
Problem
I have an Android/Gradle project. Whenever I want to run tests, I run: ``` ./gradlew connectedInstrumentTest ``` which runs all my tests under the test folder of my project. My test folder has several automation tests as well as non-automation tests. I'm mostly interested in running the fast non-automation tests without the slow automation tests. Is there a way to run just a specific set of tests, such as from one specific class or anything similar? I'm basically asking about any kind of separation so that I can choose to run just a few tests when I want to. Created a sample project here. Edit `local.properties` to point at your Android SDK. Next, start up an emulator or connect a phone to your computer. Then you can run tests using `./gradlew connectedInstrumentTest --info`. This runs all tests. What I am unable to figure out is how to only run tests in, say, one class and not all tests.