Popularity
4.1
Growing
Activity
5.8
-
363
11
19

Description

Library to help you with testing your LiveData and making your tests effective.

https://android.jlelse.eu/effective-livedata-and-viewmodel-testing-17f25069fcd4

Programming language: Java
License: Apache License 2.0
Tags: Kotlin     Android     Test     Android-library     LiveData    
Latest version: v1.1.2

LiveData Testing alternatives and similar packages

Based on the "Test" category.
Alternatively, view LiveData Testing alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of LiveData Testing or a related project?

Add another 'Test' Package

README

LiveData Testing

TestObserver to easily test LiveData and make assertions on them.

CircleCI Download License Android Arsenal

Read Medium Article for more info.

[Explanatory Diagram](img/livedata-testing.png)

Usage

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.

Download

Kotlin users:
testImplementation 'com.jraska.livedata:testing-ktx:1.1.2'
Java users:
testImplementation 'com.jraska.livedata:testing:1.1.2'

Philosophy

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:

  • Test pretends to be an Activity
  • No Android framework mocking or Robolectric - just standard fast JUnit tests
  • Fluent API inspired by RxJava TestObserver
  • Easy to write fast executing tests - possibly TDD


*Note that all licence references and agreements mentioned in the LiveData Testing README section above are relevant to that project's source code only.