TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.6K subscribers
Post #8733 6.59K
🚀 Тестирование ViewModel стало проще

В AndroidX Lifecycle 2.9.0 появилось новое API для тестирования ViewModel - ViewModelScenario. Для использования этого API необходимо подключить артефакт "androidx.lifecycle:lifecycle-viewmodel-testing".

Пример использования:
class JetpackViewModelTest {

@Test
fun testStateRestoration() = runTest { // this = TestScope
viewModelScenario { // this = CreationExtras
SampleViewModel(
scope = this@runTest,
saveStateHandle = createSavedStateHandle(),
)
}.use { scenario: ViewModelScenario ->
scenario.state.data = "testValue"
scenario.recreate()
assertEquals("testValue", scenario.state.data)
}
}
}

class SampleViewModel(
scope: CoroutineScope,
private val saveStateHandle: SavedStateHandle,
) : ViewModel(scope) {
companion object {
private const val STATE_KEY = "state_key"
}

var data: String?
get() = saveStateHandle.get<String>(STATE_KEY)
set(value) {
saveStateHandle.set(STATE_KEY, value)
}
}


#android #kmp #тестирование #jetpackupdate
  • 👍 47
  • 👎 7
More from @android_broadcast
  1. Oct 15, 2026🤖 Android прячет логины в WebView при показе экрана и запрещает приложениям тихо включать…
  2. Oct 14, 2026#видеозаписи #МобильныйВторник Осенний Mobius — уже на следующей неделе! А сегодня мы откр…
  3. Oct 14, 2026🔐 Волна утечек в Японии: эндпоинты и ключи API достают из публичных приложений 8 октября…
  4. Oct 14, 2026🛒 Google Play: свои вайб-код приложения можно ставить на устройство без аккаунта разработ…
  5. Oct 13, 2026⭐️🤖 Gemini 4 Argon пришёл в Android-разработку Google открыл Android-разработчикам свою н…
  6. Oct 13, 2026🤖 Keep-аннотации R8 вместо ручных -keep правил: вышел AndroidX Annotation Keep Недавно пи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →