# androidx.lifecycle.viewmodel.testing

# androidx.lifecycle.viewmodel.testing

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary "View this page in Java")
Common/All

## Classes

|----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----|
| [ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario) | [ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)provides API to start and drive a[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)'s lifecycle state for testing. | Cmn |

## Top-level functions summary

|-------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----|
| [CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)                              | [DefaultCreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#DefaultCreationExtras())`()` Creates a default instance of[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)pre-configured with all keys required to use[SavedStateHandle](https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Cmn |
| [CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)                              | [DefaultCreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#DefaultCreationExtras(androidx.savedstate.SavedState))`(defaultArgs: `[SavedState](https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState)`)` Creates a default instance of[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)pre-configured with all keys required to use[SavedStateHandle](https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle), with the specified[defaultArgs](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#DefaultCreationExtras(androidx.savedstate.SavedState))as the[DEFAULT_ARGS_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#DEFAULT_ARGS_KEY()).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Cmn |
| `inline `[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)`<VM>` | `<VM : `[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)`> `[viewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))`(` ` creationExtras: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)`,` ` noinline initializer: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)`.() `->` VM` `)` Creates a[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)using a given[VM](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))class as key, an[initializer](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))as a[ViewModelProvider.Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)and a[creationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))as default extras. | Cmn |
| `inline `[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)`<VM>` | `<VM : `[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)`> `[viewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))`(` ` factory: `[ViewModelProvider.Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)`,` ` creationExtras: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras) `)` Creates a[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)using a given[VM](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))class as key, an[factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))and a[creationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))as default extras.                               | Cmn |

## Top-level functions

### DefaultCreationExtras

Cmn  
Artifact:[androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle)  
[View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.kt+function:DefaultCreationExtras)  
Added in[2.9.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.9.0)  

```
fun DefaultCreationExtras(): CreationExtras
```

Creates a default instance of[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)pre-configured with all keys required to use[SavedStateHandle](https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle).

This function sets up the instance with:

- A fake[SavedStateRegistryOwner](https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner)assigned to[SAVED_STATE_REGISTRY_OWNER_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#SAVED_STATE_REGISTRY_OWNER_KEY()).

- A fake[ViewModelStoreOwner](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner)assigned to[VIEW_MODEL_STORE_OWNER_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#VIEW_MODEL_STORE_OWNER_KEY()), containing an empty[ViewModelStore](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore).

### DefaultCreationExtras

Cmn  
Artifact:[androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle)  
[View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.kt+function:DefaultCreationExtras)  

```
fun DefaultCreationExtras(defaultArgs: SavedState): CreationExtras
```

Creates a default instance of[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)pre-configured with all keys required to use[SavedStateHandle](https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle), with the specified[defaultArgs](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#DefaultCreationExtras(androidx.savedstate.SavedState))as the[DEFAULT_ARGS_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#DEFAULT_ARGS_KEY()).

This function sets up the instance with:

- A fake[SavedStateRegistryOwner](https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner)assigned to[SAVED_STATE_REGISTRY_OWNER_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#SAVED_STATE_REGISTRY_OWNER_KEY()).

- A fake[ViewModelStoreOwner](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner)assigned to[VIEW_MODEL_STORE_OWNER_KEY](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#VIEW_MODEL_STORE_OWNER_KEY()), containing an empty[ViewModelStore](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore).

### viewModelScenario

Cmn  
Artifact:[androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle)  
[View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt+function:viewModelScenario)  

```
inline fun <VM : ViewModel> viewModelScenario(
    creationExtras: CreationExtras = DefaultCreationExtras(),
    noinline initializer: CreationExtras.() -> VM
): ViewModelScenario<VM>
```

Creates a[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)using a given[VM](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))class as key, an[initializer](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))as a[ViewModelProvider.Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)and a[creationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1))as default extras.

You should access the[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)instance using[ViewModelScenario.viewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario#viewModel()), and clear the[ViewModelStore](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore)using[ViewModelScenario.close](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario#close()).

Example usage:  

```kotlin
viewModelScenario { MyViewModel(parameters) }
  .use { scenario ->
    val vm = scenario.viewModel
    // Use the ViewModel
  }
```  

|                                                                         Parameters                                                                         |
|------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<VM : `[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)`>`                                                        | The reified[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)class to be created.                                                                                                                      |
| `creationExtras: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)` = DefaultCreationExtras()` | Additional data passed to the[Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)during a[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)creation. |
| `noinline initializer: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)`.() `->` VM`          | A[Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)function to create a[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel).                         |

### viewModelScenario

Cmn  
Artifact:[androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle)  
[View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt+function:viewModelScenario)  

```
inline fun <VM : ViewModel> viewModelScenario(
    factory: ViewModelProvider.Factory,
    creationExtras: CreationExtras = DefaultCreationExtras()
): ViewModelScenario<VM>
```

Creates a[ViewModelScenario](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario)using a given[VM](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))class as key, an[factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))and a[creationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras))as default extras.

You should access the[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)instance using[ViewModelScenario.viewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario#viewModel()), and clear the[ViewModelStore](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStore)using[ViewModelScenario.close](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario#close()).

Example usage:  

```kotlin
val myFactory: ViewModelProvider.Factory = MyViewModelFactory()
viewModelScenario<MyViewModel>(myFactory)
  .use { scenario ->
    val vm = scenario.viewModel
    // Use the ViewModel
  }
```  

|                                                                         Parameters                                                                         |
|------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<VM : `[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)`>`                                                        | The reified[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)class to be created.                                                                                                                      |
| `factory: `[ViewModelProvider.Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)                        | A[Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)to create a[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel).                                  |
| `creationExtras: `[CreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)` = DefaultCreationExtras()` | Additional data passed to the[Factory](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory)during a[ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel)creation. |