TestObserver to easily test LiveData and make assertions on them.
TestObserver to easily test LiveData and make assertions on them.
Read Medium Article for more info.
Having LiveData<Integer>
of counter from 0 to 4:
Kotlin - see ExampleTest.kt
liveData.test()
.awaitValue()
.assertHasValue()
.assertValue { it > 3 }
.assertValue(4)
.assertHistorySize(5)
.assertNever { it > 4 }
// Assertion on structures with a lot of nesting
viewLiveData.map { it.items[0].header.title }
.assertValue("Expected title")
Java - see ExampleTest.java
TestObserver.test(liveData)
.awaitValue()
.assertHasValue()
.assertValue(value -> value > 3)
.assertValue(4)
.assertHistorySize(5)
.assertNever(value -> value > 4);
Don't forget to use InstantTaskExecutorRule
from androidx.arch.core:core-testing
to make your LiveData test run properly.
testImplementation 'com.jraska.livedata:testing-ktx:1.3.0'
testImplementation 'com.jraska.livedata:testing:1.3.0'
This library is created in a belief that to effective and valuable test should be fast to write and model real code usage. As by Architecture components spec Activity should communicate with its ViewModel only through observing LiveData. TestObserver in this case simulates the Activity and by testing LiveData, we could test our whole logic except the View where the responsibility belongs to Activity. Key ideas: