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

Class Overview

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).
[Expand]
Inherited Methods
From class android.support.test.rule.UiThreadTestRule
From class java.lang.Object
From interface org.junit.rules.TestRule

Public Constructors

public ActivityTestRule (Class<T> activityClass)

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

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

public 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 The activity under test. This must be a class in the instrumentation targetPackage specified in the AndroidManifest.xml
initialTouchMode true if the Activity should be placed into "touch mode" when started

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

Creates an ActivityTestRule for the Activity under test.

Parameters
activityClass The activity under test. This must be a class in the instrumentation targetPackage specified in the AndroidManifest.xml
initialTouchMode true if the Activity should be placed into "touch mode" when started
launchActivity 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

public Statement apply (Statement base, Description description)

public T getActivity ()

Returns
  • The activity under test.

public T launchActivity (Intent startIntent)

Launches the Activity under test.

Don't call this method directly, unless you explicitly requested not to 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 The Intent that will be used to start the Activity under test. If startIntent is null, the Intent returned by getActivityIntent() is used.
Returns
  • the Activity launched by this rule.

Protected Methods

protected 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.

protected 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.

protected 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.

protected 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