Sean Blahovici
Sean Blahovici

Reputation: 5750

Run specific instrumentation test suite with Gradle Managed Devices - Android

So with the release of Android Studio Dolphin & Beta of Electric Eel, I wanted to try the instrumentation tests in gradle. I do however want to exclude some of the tests being run, in order to be able to run specific test suites one at a time.

So here is what I configured so far:

android {
  testOptions {
    managedDevices {
      devices {
        pixel2api30 (com.android.build.api.dsl.ManagedVirtualDevice) {
          device = "Pixel 2"
          apiLevel = 30
          systemImageSource = "aosp-atd"
        }
      }
    }
  }
}

I know I can run my entire suite using

./gradlew device-nameBuildVariantAndroidTest

In my case that would be

./gradlew pixel2api30gaeDebugAndroidTest

gaeDebug being my build variant. This command is being run in my project root.

If I want to run the tests in the tests/large folder for example

File structure

How would I go about doing that? Thanks.

Upvotes: 3

Views: 1212

Answers (1)

Marko Lalic
Marko Lalic

Reputation: 11

For this you could use 2 different approaches:

  1. Create and run test suites.

For example, for each of these folders, create a TestSuite and define Test classes. For example:

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ExampleLargeTest.class,
    ExampleTwoLargeTest.class,
    ExampleThreeLargeTest.class
})
public class LargeTestsSuite {
}

This suite can be run using following command

./gradlew pixel2api30gaeDebugAndroidTest - Pandroid.testInstrumentationRunnerArguments.class=path.to.your.suite.class
  1. Use Test Categories

Annotate your Test classes like this:

@Category("Large")
public class ExampleLargeTest { ... }

And then you could execute the following command for running all tests with same category:

    ./gradlew pixel2api30gaeDebugAndroidTest -PtestCategory=Large

Hopefully one of these two approaches will suite you.

Upvotes: 1

Related Questions