Unit Testing Androidviewmodel Classes
Im writting Unit Tests for my app and I've found a 'speed bump' while writting them. While testing subclasses of AndroidViewModel im missing the Application parameter for its initi
Solution 1:
I had the same issue, and found two solutions.
You can use Robolectric in a Unit Test, inside test directory, and choose the platform Application class.
@RunWith(RobolectricTestRunner::class)@Config(application = Application::class)classViewModelTest{
@Test@Throws(Exception::class)funsomeTest() {
val application = RuntimeEnvironment.application
val testViewModel = MyViewModelThatExtendsFromAndroidViewModel(application)
testViewModel.foo()
}
}
Or you can use an InstrumentationTest inside androidTest directory, and cast the InstrumentationRegistry.getTargetContext().applicationContext to Application:
@RunWith(AndroidJUnit4::class)classViewModelTest{
@Test@Throws(Exception::class)funsomeTest() {
val application = ApplicationProvider.getApplicationContext() as Application
val testViewModel = MyViewModelThatExtendsFromAndroidViewModel(application)
testViewModel.foo()
}
}
Hope it helped!
Post a Comment for "Unit Testing Androidviewmodel Classes"