FragmentScenario
class FragmentScenario<F : Fragment>
kotlin.Any | |
↳ | androidx.fragment.app.testing.FragmentScenario |
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 androidx.fragment.app.Fragment. If you are using
a deprecated fragment class such as android.support.v4.app.Fragment
or
android.app.Fragment, please update your code to
androidx.fragment.app.Fragment.
If your testing Fragment has a dependency to specific theme such as Theme.AppCompat
,
use the theme ID parameter in launch method.
Summary
Nested classes | |
---|---|
abstract |
Public methods | |
---|---|
Unit |
FragmentAction interface should be implemented by any class whose instances are intended to be executed by the main thread. |
FragmentScenario<F> |
moveToState(newState: Lifecycle.State) Moves Fragment state to a new state. |
FragmentScenario<F> |
onFragment(action: FragmentScenario.FragmentAction<F>) Runs a given action on the current Activity's main thread. |
FragmentScenario<F> |
recreate() Recreates the host Activity. |
Companion functions | |
---|---|
FragmentScenario<F> |
launch(fragmentClass: Class<F>, fragmentArgs: Bundle?, factory: FragmentFactory?) Launches a Fragment with given arguments hosted by an empty FragmentActivity using the given FragmentFactory and waits for it to reach the resumed state. |
FragmentScenario<F> |
launch(fragmentClass: Class<F>, fragmentArgs: Bundle?, @StyleRes themeResId: Int, factory: FragmentFactory?) Launches a Fragment with given arguments hosted by an empty FragmentActivity themed by themeResId, using the given FragmentFactory and waits for it to reach the resumed state. |
FragmentScenario<F> |
launch(fragmentClass: Class<F>, fragmentArgs: Bundle? = null, @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme, initialState: Lifecycle.State = Lifecycle.State.RESUMED, factory: FragmentFactory? = null) Launches a Fragment with given arguments hosted by an empty FragmentActivity themed by themeResId, using the given FragmentFactory and waits for it to reach initialState. |
FragmentScenario<F> |
launchInContainer(fragmentClass: Class<F>, fragmentArgs: Bundle?, factory: FragmentFactory?) Launches a Fragment in the Activity's root view container |
FragmentScenario<F> |
launchInContainer(fragmentClass: Class<F>, fragmentArgs: Bundle?, @StyleRes themeResId: Int, factory: FragmentFactory?) Launches a Fragment in the Activity's root view container |
FragmentScenario<F> |
launchInContainer(fragmentClass: Class<F>, fragmentArgs: Bundle? = null, @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme, initialState: Lifecycle.State = Lifecycle.State.RESUMED, factory: FragmentFactory? = null) Launches a Fragment in the Activity's root view container |
Extension functions | ||
---|---|---|
From androidx.fragment.app.testing
|
Public methods
<no name provided>
fun <no name provided>(): Unit
FragmentAction interface should be implemented by any class whose instances are intended to be executed by the main thread. A Fragment that is instrumented by the FragmentScenario is passed to FragmentAction.perform method.
You should never keep the Fragment reference as it will lead to unpredictable behaviour. It should only be accessed in FragmentAction.perform scope.
moveToState
fun moveToState(newState: Lifecycle.State): FragmentScenario<F>
Moves Fragment state to a new state.
If a new state and current state are the same, this method does nothing. It accepts CREATED, STARTED, RESUMED, and DESTROYED. 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.
onFragment
fun onFragment(action: FragmentScenario.FragmentAction<F>): FragmentScenario<F>
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.
recreate
fun recreate(): FragmentScenario<F>
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.
Companion functions
launch
@JvmStatic fun <F : Fragment> launch(
fragmentClass: Class<F>,
fragmentArgs: Bundle?,
factory: FragmentFactory?
): FragmentScenario<F>
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<F> | 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 |