Sph*_*ine 4 junit unit-testing android-livedata
因此,我尝试使用MediatorLiveData作为一个相当简单的用例,通过使用libphonenumber将ISO国家代码(例如“ US”)转换为国家代码(例如“ +1”)。生成的屏幕工作正常,但即使使用InstantTaskExecutorRule,也似乎无法通过JUnit测试。
我认为应该通过,但失败的示例最小单元测试(在Kotlin中):
import android.arch.core.executor.testing.InstantTaskExecutorRule
import android.arch.lifecycle.MediatorLiveData
import android.arch.lifecycle.MutableLiveData
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
class MediatorLiveData_metaTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
@Test
fun mediatorLiveData_metaTest() {
val sourceInt = MutableLiveData<Int>()
val mediatedStr = MediatorLiveData<String>()
mediatedStr.addSource(sourceInt) {
mediatedStr.value = it.toString()
}
sourceInt.value = 123
assertEquals("123", mediatedStr.value) // says mediatedStr.value is null
}
}
Run Code Online (Sandbox Code Playgroud)