watabee's blog

プログラミング関連のブログです

【Android】UnitTestでLiveDataから値を取得する

UnitTest で LiveData から値を取得するために、iosched のプロジェクトでは以下のリンクのように LiveDataTestUtil を実装しているようです。

github.com

これを Kotlin Coroutines で書き直してみました。

gist.github.com

これで以下のような形でテストを書くことができます。

class MyViewModel : ViewModel() {
    val isLoading = MutableLiveData(false)

    ...
}

class MyViewModelTest {

    @get:Rule
    val instantTaskExecutorRule = InstantTaskExecutorRule()

    @Test
    fun testSample() = runBlocking {
        val viewModel = MyViewModel()
        Truth.assertThat(viewModel.isLoading.awaitValue).isFalse()
    }
}