Skip to content Skip to sidebar Skip to footer

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"