ActivityTestRule

public class ActivityTestRule
extends UiThreadTestRule

java.lang.Object
   ↳ android.support.test.rule.UiThreadTestRule
     ↳ android.support.test.rule.ActivityTestRule<T extends android.app.Activity>
Known Direct Subclasses


This rule provides functional testing of a single activity. The activity under test will be launched before each test annotated with Test and before methods annotated with Before. It will be terminated after the test is completed and methods annotated with After are finished. During the duration of the test you will be able to manipulate your Activity directly.

Summary

Public constructors

ActivityTestRule(Class<T> activityClass)

Similar to ActivityTestRule(Class, boolean, boolean) but with "touch mode" disabled.

ActivityTestRule(Class<T> activityClass, boolean initialTouchMode)

Similar to ActivityTestRule(Class, boolean, boolean) but defaults to launch the activity under test once per Test method.

ActivityTestRule(Class<T> activityClass, boolean initialTouchMode, boolean launchActivity)

Creates an ActivityTestRule for the Activity under test.

Public methods

Statement apply(Statement base, Description description)
T getActivity()
T launchActivity(Intent startIntent)

Launches the Activity under test.

Protected methods

void afterActivityFinished()

Override this method to execute any code that should run after your Activity is finished.

void afterActivityLaunched()

Override this method to execute any code that should run after your Activity is launched, but before any test code is run including any method annotated with Before.

void beforeActivityLaunched()

Override this method to execute any code that should run before your Activity is created and launched.

Intent getActivityIntent()

Override this method to set up Intent as if supplied to startActivity(Intent).

Inherited methods

From class android.support.test.rule.UiThreadTestRule
From class java.lang.Object
From interface org.junit.rules.TestRule

Public constructors

ActivityTestRule

ActivityTestRule (Class<T> activityClass)

Similar to ActivityTestRule(Class, boolean, boolean) but with "touch mode" disabled.

Parameters
activityClass Class: The activity under test. This must be a class in the instrumentation targetPackage specified in the AndroidManifest.xml

See also:

ActivityTestRule

ActivityTestRule (Class<T> activityClass, 
                boolean initialTouchMode)

Similar to ActivityTestRule(Class, boolean, boolean) but defaults to launch the activity under test once per Test method. It is launched before the first Before method, and terminated after the last After method.

Parameters
activityClass Class: The activity under test. This must be a class in the instrumentation targetPackage specified in the AndroidManifest.xml
initialTouchMode boolean: true if the Activity should be placed into "touch mode" when started

See also:

ActivityTestRule

ActivityTestRule (Class<T> activityClass, 
                boolean initialTouchMode, 
                boolean launchActivity)

Creates an ActivityTestRule for the Activity under test.

Parameters
activityClass Class: The activity under test. This must be a class in the instrumentation targetPackage specified in the AndroidManifest.xml
initialTouchMode boolean: true if the Activity should be placed into "touch mode" when started
launchActivity boolean: true if the Activity should be launched once per Test method. It will be launched before the first Before method, and terminated after the last After method.

Public methods

apply

Statement apply (Statement base, 
                Description description)

Parameters
base Statement
description Description
Returns
Statement

getActivity

T getActivity ()

Returns
T The activity under test.

launchActivity

T launchActivity (Intent startIntent)

Launches the Activity under test.

Don't call this method directly, unless you explicitly requested not to lazily launch the Activity manually using the launchActivity flag in ActivityTestRule(Class, boolean, boolean).

Usage:

    @Test
    public void customIntentToStartActivity() {
        Intent intent = new Intent(Intent.ACTION_PICK);
        mActivity = mActivityRule.launchActivity(intent);
    }
 

Parameters
startIntent Intent: The Intent that will be used to start the Activity under test. If startIntent is null, the Intent returned by getActivityIntent() is used.
Returns
T the Activity launched by this rule.

See also:

Protected methods

afterActivityFinished

void afterActivityFinished ()

Override this method to execute any code that should run after your Activity is finished. This method is called after each test method, including any method annotated with After.

afterActivityLaunched

void afterActivityLaunched ()

Override this method to execute any code that should run after your Activity is launched, but before any test code is run including any method annotated with Before.

Prefer Before over this method. This method should usually not be overwritten directly in tests and only be used by subclasses of ActivityTestRule to get notified when the activity is created and visible but test runs.

beforeActivityLaunched

void beforeActivityLaunched ()

Override this method to execute any code that should run before your Activity is created and launched. This method is called before each test method, including any method annotated with Before.

getActivityIntent

Intent getActivityIntent ()

Override this method to set up Intent as if supplied to startActivity(Intent).

The default Intent (if this method returns null or is not overwritten) is: action = ACTION_MAIN flags = FLAG_ACTIVITY_NEW_TASK All other intent fields are null or empty.

Returns
Intent The Intent as if supplied to startActivity(Intent).