FragmentScenario

public final class FragmentScenario
extends Object

java.lang.Object
   ↳ androidx.fragment.app.testing.FragmentScenario<F extends androidx.fragment.app.Fragment>


FragmentScenario provides API to start and drive a Fragment's lifecycle state for testing. It works with arbitrary fragments and works consistently across different versions of the Android framework.

FragmentScenario only supports Fragment. If you are using a deprecated fragment class such as Fragment or Fragment, please update your code to Fragment.

Summary

Nested classes

interface FragmentScenario.FragmentAction<F extends Fragment>

FragmentAction interface should be implemented by any class whose instances are intended to be executed by the main thread. 

Public methods

static <F extends Fragment> FragmentScenario<F> launch(Class<F> fragmentClass, Bundle fragmentArgs, FragmentFactory factory)

Launches a Fragment with given arguments hosted by an empty FragmentActivity using the given FragmentFactory and waits for it to reach the resumed state.

static <F extends Fragment> FragmentScenario<F> launch(Class<F> fragmentClass)

Launches a Fragment hosted by an empty FragmentActivity and waits for it to reach the resumed state.

static <F extends Fragment> FragmentScenario<F> launch(Class<F> fragmentClass, Bundle fragmentArgs)

Launches a Fragment with given arguments hosted by an empty FragmentActivity and waits for it to reach the resumed state.

static <F extends Fragment> FragmentScenario<F> launchInContainer(Class<F> fragmentClass, Bundle fragmentArgs, FragmentFactory factory)

Launches a Fragment in the Activity's root view container android.R.id.content, with given arguments hosted by an empty FragmentActivity and waits for it to reach the resumed state.

static <F extends Fragment> FragmentScenario<F> launchInContainer(Class<F> fragmentClass, Bundle fragmentArgs)

Launches a Fragment in the Activity's root view container android.R.id.content, with given arguments hosted by an empty FragmentActivity using the given FragmentFactory and waits for it to reach the resumed state.

static <F extends Fragment> FragmentScenario<F> launchInContainer(Class<F> fragmentClass)

Launches a Fragment in the Activity's root view container android.R.id.content, hosted by an empty FragmentActivity and waits for it to reach the resumed state.

FragmentScenario<F> moveToState(Lifecycle.State newState)

Moves Fragment state to a new state.

FragmentScenario<F> onFragment(FragmentAction<F> action)

Runs a given action on the current Activity's main thread.

FragmentScenario<F> recreate()

Recreates the host Activity.

Inherited methods

Public methods

launch

public static FragmentScenario<F> launch (Class<F> fragmentClass, 
                Bundle fragmentArgs, 
                FragmentFactory factory)

Launches a Fragment with given arguments hosted by an empty FragmentActivity using the given FragmentFactory and waits for it to reach the resumed state.

This method cannot be called from the main thread.

Parameters
fragmentClass Class: a fragment class to instantiate

fragmentArgs Bundle: a bundle to passed into fragment

factory FragmentFactory: a fragment factory to use or null to use default factory

Returns
FragmentScenario<F>

launch

public static FragmentScenario<F> launch (Class<F> fragmentClass)

Launches a Fragment hosted by an empty FragmentActivity and waits for it to reach the resumed state.

Parameters
fragmentClass Class: a fragment class to instantiate

Returns
FragmentScenario<F>

launch

public static FragmentScenario<F> launch (Class<F> fragmentClass, 
                Bundle fragmentArgs)

Launches a Fragment with given arguments hosted by an empty FragmentActivity and waits for it to reach the resumed state.

This method cannot be called from the main thread.

Parameters
fragmentClass Class: a fragment class to instantiate

fragmentArgs Bundle: a bundle to passed into fragment

Returns
FragmentScenario<F>

launchInContainer

public static FragmentScenario<F> launchInContainer (Class<F> fragmentClass, 
                Bundle fragmentArgs, 
                FragmentFactory factory)

Launches a Fragment in the Activity's root view container android.R.id.content, with given arguments hosted by an empty FragmentActivity and waits for it to reach the resumed state.

This method cannot be called from the main thread.

Parameters
fragmentClass Class: a fragment class to instantiate

fragmentArgs Bundle: a bundle to passed into fragment

factory FragmentFactory: a fragment factory to use or null to use default factory

Returns
FragmentScenario<F>

launchInContainer

public static FragmentScenario<F> launchInContainer (Class<F> fragmentClass, 
                Bundle fragmentArgs)

Launches a Fragment in the Activity's root view container android.R.id.content, with given arguments hosted by an empty FragmentActivity using the given FragmentFactory and waits for it to reach the resumed state.

This method cannot be called from the main thread.

Parameters
fragmentClass Class: a fragment class to instantiate

fragmentArgs Bundle: a bundle to passed into fragment

Returns
FragmentScenario<F>

launchInContainer

public static FragmentScenario<F> launchInContainer (Class<F> fragmentClass)

Launches a Fragment in the Activity's root view container android.R.id.content, hosted by an empty FragmentActivity and waits for it to reach the resumed state.

This method cannot be called from the main thread.

Parameters
fragmentClass Class: a fragment class to instantiate

Returns
FragmentScenario<F>

moveToState

public FragmentScenario<F> moveToState (Lifecycle.State newState)

Moves Fragment state to a new state.

If a new state and current state are the same, this method does nothing. It accepts Lifecycle.State.CREATED, Lifecycle.State.STARTED, Lifecycle.State.RESUMED, and Lifecycle.State.DESTROYED.

Lifecycle.State.DESTROYED is a terminal state. You cannot move to any other state after the Fragment reaches that state.

This method cannot be called from the main thread.

Parameters
newState Lifecycle.State

Returns
FragmentScenario<F>

onFragment

public FragmentScenario<F> onFragment (FragmentAction<F> action)

Runs a given action on the current Activity's main thread.

Note that you should never keep Fragment reference passed into your action because it can be recreated at anytime during state transitions.

Throwing an exception from action makes the host Activity crash. You can inspect the exception in logcat outputs.

This method cannot be called from the main thread.

Parameters
action FragmentAction

Returns
FragmentScenario<F>

recreate

public FragmentScenario<F> recreate ()

Recreates the host Activity.

After this method call, it is ensured that the Fragment state goes back to the same state as its previous state.

This method cannot be called from the main thread.

Returns
FragmentScenario<F>