androidx.work.testing

WorkManager Testing is a library for testing app code that runs using WorkManager.

This testing library provides a way to manually initialize WorkManager for tests by using androidx.work.testing.WorkManagerTestInitHelper. Once initialized, you can use getTestDriver to drive constraints and timing-related triggers for your background work.

For ease of testing, this library defaults to using a synchronous java.util.concurrent.Executor; you can change this in the androidx.work.Configuration if you wish.

Interfaces

TestDriver

Additional functionality exposed for androidx.work.WorkManager that are useful in the context of testing.

Classes

SynchronousExecutor

Is an implementation of a java.util.concurrent.Executor which executes 's synchronously.

TestListenableWorkerBuilder

Builds instances of androidx.work.ListenableWorker which can be used for testing.

TestWorkerBuilder

Builds instances of Worker which can be used for testing.

WorkManagerTestInitHelper

Helps initialize androidx.work.WorkManager for testing.

Enums

WorkManagerTestInitHelper.ExecutorsMode

Modes that control which executors are used in tests.

Top-level functions summary

inline TestListenableWorkerBuilder<W>
<W : ListenableWorker> TestListenableWorkerBuilder(
    context: Context,
    inputData: Data,
    tags: List<String>,
    runAttemptCount: Int,
    triggeredContentUris: List<Uri>,
    triggeredContentAuthorities: List<String>
)

Builds an instance of TestListenableWorkerBuilder.

inline TestWorkerBuilder<W>
<W : Worker> TestWorkerBuilder(
    context: Context,
    executor: Executor,
    inputData: Data,
    tags: List<String>,
    runAttemptCount: Int,
    triggeredContentUris: List<Uri>,
    triggeredContentAuthorities: List<String>
)

Builds an instance of TestWorkerBuilder.

Top-level functions

TestListenableWorkerBuilder

inline fun <W : ListenableWorker> TestListenableWorkerBuilder(
    context: Context,
    inputData: Data = Data.EMPTY,
    tags: List<String> = emptyList(),
    runAttemptCount: Int = 1,
    triggeredContentUris: List<Uri> = emptyList(),
    triggeredContentAuthorities: List<String> = emptyList()
): TestListenableWorkerBuilder<W>

Builds an instance of TestListenableWorkerBuilder.

Parameters
<W : ListenableWorker>

The subtype of ListenableWorker

context: Context

The application Context

inputData: Data = Data.EMPTY

The input data for the ListenableWorker

runAttemptCount: Int = 1

The run attempt count of the ListenableWorker

triggeredContentUris: List<Uri> = emptyList()

The list of triggered content Uris

triggeredContentAuthorities: List<String> = emptyList()

The list of triggered content authorities

TestWorkerBuilder

inline fun <W : Worker> TestWorkerBuilder(
    context: Context,
    executor: Executor,
    inputData: Data = Data.EMPTY,
    tags: List<String> = emptyList(),
    runAttemptCount: Int = 1,
    triggeredContentUris: List<Uri> = emptyList(),
    triggeredContentAuthorities: List<String> = emptyList()
): TestWorkerBuilder<W>

Builds an instance of TestWorkerBuilder.

Parameters
<W : Worker>

The subtype of Worker

context: Context

The application Context

executor: Executor

The Executor that the Worker runs on

inputData: Data = Data.EMPTY

The input data for the Worker

runAttemptCount: Int = 1

The run attempt count of the Worker

triggeredContentUris: List<Uri> = emptyList()

The list of triggered content Uris

triggeredContentAuthorities: List<String> = emptyList()

The list of triggered content authorities

Returns
TestWorkerBuilder<W>

The instance of TestWorkerBuilder