Fixed
Status Update
Comments
ia...@gmail.com <ia...@gmail.com> #2
It would be nice to have a ViewModelScenario
like API, similar to ActivityScenario
or FragmentScenario
(but much simpler) that could implement Closeable
so that you can use Kotlin's use
method to auto-close it and trigger the ViewModel's onCleared()
.
E.g.,
// Construct a scenario using a ViewModel constructor lambda
// that would use the viewModelFactory DSL under the hood
viewModelScenario {
MyViewModel(parameters)
}.use { scenario ->
val vm = scenario.viewModel
// Use the ViewModel
}
// Now the ViewModel is cleared, since the use block clears the ViewModel after it completes
If reusing the ViewModelProvider.Factory is helpful, you could also provide a viewModelScenario<MyViewModel>(factory)
overload that would get the ViewModel instance from the factory.
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
mg...@google.com <mg...@google.com>
mg...@google.com <mg...@google.com>
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit c9b3409fcde227edba6b2ee6f9baa89c6b43081c
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 01 18:32:08 2024
Add `ViewModelScenario` testing API
RelNote: "New `ViewModelScenario` class for testing a `ViewModel` in isolation."
Bug: 264602919
Test: ViewModelScenarioTest
Change-Id: I5d0e36b3bf1370f7d739dc6eb720056f235a392a
A lifecycle/lifecycle-viewmodel-testing/api/current.txt
A lifecycle/lifecycle-viewmodel-testing/api/res-current.txt
A lifecycle/lifecycle-viewmodel-testing/api/restricted_current.txt
A lifecycle/lifecycle-viewmodel-testing/bcv/native/current.txt
M lifecycle/lifecycle-viewmodel-testing/build.gradle
A lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt
A lifecycle/lifecycle-viewmodel-testing/src/commonTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioTest.kt
https://android-review.googlesource.com/3155119
Branch: androidx-main
commit c9b3409fcde227edba6b2ee6f9baa89c6b43081c
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 01 18:32:08 2024
Add `ViewModelScenario` testing API
RelNote: "New `ViewModelScenario` class for testing a `ViewModel` in isolation."
Bug: 264602919
Test: ViewModelScenarioTest
Change-Id: I5d0e36b3bf1370f7d739dc6eb720056f235a392a
A lifecycle/lifecycle-viewmodel-testing/api/current.txt
A lifecycle/lifecycle-viewmodel-testing/api/res-current.txt
A lifecycle/lifecycle-viewmodel-testing/api/restricted_current.txt
A lifecycle/lifecycle-viewmodel-testing/bcv/native/current.txt
M lifecycle/lifecycle-viewmodel-testing/build.gradle
A lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt
A lifecycle/lifecycle-viewmodel-testing/src/commonTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioTest.kt
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 337f68d7ae82f8eaceba983736bfa10ad1f1a0b9
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 01 14:34:44 2024
Add `viewmodel-testing` artifact
Bug: 264602919
Test: manual
Change-Id: I48d6948a0dac2f5a1e9d98f531755b1faca898a4
M docs-tip-of-tree/build.gradle
A lifecycle/lifecycle-viewmodel-testing/build.gradle
M settings.gradle
https://android-review.googlesource.com/3155118
Branch: androidx-main
commit 337f68d7ae82f8eaceba983736bfa10ad1f1a0b9
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 01 14:34:44 2024
Add `viewmodel-testing` artifact
Bug: 264602919
Test: manual
Change-Id: I48d6948a0dac2f5a1e9d98f531755b1faca898a4
M docs-tip-of-tree/build.gradle
A lifecycle/lifecycle-viewmodel-testing/build.gradle
M settings.gradle
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 9799a95c1fc5e6d976d693f5a3fcb74ebe1beb4b
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 15 19:42:02 2024
Add support for `SavedStateHandle` in `viewModelScenario`
* Includes `DefaultCreationExtras(defaultArgs: Bundle)` for Android, allowing you to pass arguments to a `SavedStateHandle`.
RelNote: "Add support for `SavedStateHandle` in `viewModelScenario`."
Bug: 264602919
Test: DefaultCreationExtrasInstrumentedTest
Test: ViewModelInstrumentedTest
Change-Id: Iea7aa28b52581509cfa9f0b7b5df5f7836c578e0
M buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
M lifecycle/lifecycle-viewmodel-testing/api/current.txt
M lifecycle/lifecycle-viewmodel-testing/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-testing/bcv/native/current.txt
M lifecycle/lifecycle-viewmodel-testing/build.gradle
A lifecycle/lifecycle-viewmodel-testing/src/androidInstrumentedTest/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtrasInstrumentedTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/androidInstrumentedTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioInstrumentedTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/androidMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.android.kt
A lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.kt
M lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt
M lifecycle/lifecycle-viewmodel-testing/src/commonTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/desktopMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.desktop.kt
A lifecycle/lifecycle-viewmodel-testing/src/nonJvmCommonMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.nonJvm.kt
https://android-review.googlesource.com/3174779
Branch: androidx-main
commit 9799a95c1fc5e6d976d693f5a3fcb74ebe1beb4b
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Jul 15 19:42:02 2024
Add support for `SavedStateHandle` in `viewModelScenario`
* Includes `DefaultCreationExtras(defaultArgs: Bundle)` for Android, allowing you to pass arguments to a `SavedStateHandle`.
RelNote: "Add support for `SavedStateHandle` in `viewModelScenario`."
Bug: 264602919
Test: DefaultCreationExtrasInstrumentedTest
Test: ViewModelInstrumentedTest
Change-Id: Iea7aa28b52581509cfa9f0b7b5df5f7836c578e0
M buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
M lifecycle/lifecycle-viewmodel-testing/api/current.txt
M lifecycle/lifecycle-viewmodel-testing/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-testing/bcv/native/current.txt
M lifecycle/lifecycle-viewmodel-testing/build.gradle
A lifecycle/lifecycle-viewmodel-testing/src/androidInstrumentedTest/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtrasInstrumentedTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/androidInstrumentedTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioInstrumentedTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/androidMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.android.kt
A lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.kt
M lifecycle/lifecycle-viewmodel-testing/src/commonMain/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt
M lifecycle/lifecycle-viewmodel-testing/src/commonTest/kotlin/androidx/lifecycle/viewmodel/testing/ViewModelScenarioTest.kt
A lifecycle/lifecycle-viewmodel-testing/src/desktopMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.desktop.kt
A lifecycle/lifecycle-viewmodel-testing/src/nonJvmCommonMain/kotlin/androidx/lifecycle/viewmodel/testing/DefaultCreationExtras.nonJvm.kt
Description
Component used:
androidx.lifecycle
Version used:
2.5.1
Devices/Android versions reproduced on: n/a
It's common to test view models in use tests but there is currently no way to close a view model without creating a VM Store, Factory etc. It would be nice if there was a test artifact that could help you provide a view model and close it.