Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

To obtain a viewmodel when using Hilt in UnitTest, you can use the HiltRule class provided by Hilt. Here are the steps:

  1. Add the dependencies for Hilt and Hilt testing in your project as follows:
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'
}
  1. Create a test class and annotate it with @HiltAndroidTest.
@HiltAndroidTest
class MyViewModelTest {
    // ...
}
  1. In your test class, create an instance of 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
}
  1. Use the 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.