TestedExtension

public interface TestedExtension

Known direct subclasses
ApplicationExtension

Extension for the Android Gradle Plugin Application plugin.

DynamicFeatureExtension

Extension for the Android Dynamic Feature Gradle Plugin.

LibraryExtension

Extension for the Android Library Gradle Plugin.


Common extension properties for the Android Application. Library and Dynamic Feature Plugins that relate to testing

Only the Android Gradle Plugin should create instances of this interface.

Summary

Public methods

abstract @NonNull String

Specifies the build type that the plugin should use to test the module.

abstract @NonNull TestFixtures

Options to configure the test fixtures.

abstract String

The namespace used by the android test and unit test components for the generated R and BuildConfig classes.

abstract void

Specifies the build type that the plugin should use to test the module.

abstract void
setTestNamespace(String testNamespace)

The namespace used by the android test and unit test components for the generated R and BuildConfig classes.

abstract void

Options to configure the test fixtures.

Public methods

getTestBuildType

abstract @NonNull String getTestBuildType()

Specifies the build type that the plugin should use to test the module.

By default, the Android plugin uses the "debug" build type. This means that when you deploy your instrumented tests using gradlew connectedAndroidTest, it uses the code and resources from the module's "debug" build type to create the test APK. The plugin then deploys the "debug" version of both the module's APK and the test APK to a connected device, and runs your tests.

To change the test build type to something other than "debug", specify it as follows:

android {
// Changes the test build type for instrumented tests to "stage".
testBuildType "stage"
}

If your module configures product flavors the plugin creates a test APK and deploys tests for each build variant that uses the test build type. For example, consider if your module configures "debug" and "release" build types, and "free" and "paid" product flavors. By default, when you run your instrumented tests using gradlew connectedAndroidTest, the plugin performs executes the following tasks:

  • connectedFreeDebugAndroidTest: builds and deploys a freeDebug test APK and module APK, and runs instrumented tests for that variant.

  • connectedPaidDebugAndroidTest: builds and deploys a paidDebug test APK and module APK, and runs instrumented tests for that variant.

To learn more, read Create instrumented test for a build variant

Note: You can execute connected<BuildVariant>AndroidTest tasks only for build variants that use the test build type. So, by default, running connectedStageAndroidTest results in the following build error:

Task 'connectedStageAndroidTest' not found in root project

You can resolve this issue by changing the test build type to "stage".

getTestFixtures

@Incubating
abstract @NonNull TestFixtures getTestFixtures()

Options to configure the test fixtures.

getTestNamespace

abstract String getTestNamespace()

The namespace used by the android test and unit test components for the generated R and BuildConfig classes.

setTestBuildType

abstract void setTestBuildType(@NonNull String testBuildType)

Specifies the build type that the plugin should use to test the module.

By default, the Android plugin uses the "debug" build type. This means that when you deploy your instrumented tests using gradlew connectedAndroidTest, it uses the code and resources from the module's "debug" build type to create the test APK. The plugin then deploys the "debug" version of both the module's APK and the test APK to a connected device, and runs your tests.

To change the test build type to something other than "debug", specify it as follows:

android {
// Changes the test build type for instrumented tests to "stage".
testBuildType "stage"
}

If your module configures product flavors the plugin creates a test APK and deploys tests for each build variant that uses the test build type. For example, consider if your module configures "debug" and "release" build types, and "free" and "paid" product flavors. By default, when you run your instrumented tests using gradlew connectedAndroidTest, the plugin performs executes the following tasks:

  • connectedFreeDebugAndroidTest: builds and deploys a freeDebug test APK and module APK, and runs instrumented tests for that variant.

  • connectedPaidDebugAndroidTest: builds and deploys a paidDebug test APK and module APK, and runs instrumented tests for that variant.

To learn more, read Create instrumented test for a build variant

Note: You can execute connected<BuildVariant>AndroidTest tasks only for build variants that use the test build type. So, by default, running connectedStageAndroidTest results in the following build error:

Task 'connectedStageAndroidTest' not found in root project

You can resolve this issue by changing the test build type to "stage".

setTestNamespace

abstract void setTestNamespace(String testNamespace)

The namespace used by the android test and unit test components for the generated R and BuildConfig classes.

testFixtures

@Incubating
abstract void testFixtures(
    @ExtensionFunctionType @NonNull Function1<@NonNull TestFixturesUnit> action
)

Options to configure the test fixtures.