To obtain a viewmodel when using Hilt in UnitTest, you can use the HiltRule class provided by Hilt. Here are the steps:
dependencies {
// Hilt
implementation 'com.google.dagger:hilt-android:2.38.1'
kapt 'com.google.dagger:hilt-android-compiler:2.38.1'
// Hilt testing
testImplementation 'com.google.dagger:hilt-android-testing:2.38.1'
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.38.1'
kaptTest 'com.google.dagger:hilt-android-compiler:2.38.1'
}
@HiltAndroidTest
.@HiltAndroidTest
class MyViewModelTest {
// ...
}
HiltViewModelTest
and get the viewmodel you want to test.@get:Rule
var hiltRule = HiltViewModelTestRule()
@Test
fun testMyViewModel() {
val viewModel = hiltRule.viewModel<MyViewModel>()
// Use the viewModel methods to test the behavior
}
viewModel
method provided by HiltViewModelTestRule
to get the viewmodel instance. You can now use it to test the behavior of the viewmodel.Note: You need to add the Hilt components to the test module or use the @UninstallModules
annotation to remove any component that may interfere with your test.
Asked: 2022-09-23 11:00:00 +0000
Seen: 12 times
Last updated: Jun 17 '22