Android LiveData';s Transformations.map未在单元测试中触发,且仅在单元测试中触发

Android LiveData';s Transformations.map未在单元测试中触发,且仅在单元测试中触发,android,unit-testing,kotlin,android-livedata,Android,Unit Testing,Kotlin,Android Livedata,我有这样一个ViewModel: 类MyViewModel{ val title=MutableLiveData() val onTitleError:LiveData=Transformations.map(标题,this::validateTitle) } 问题是在单元测试转换期间执行时。map永远不会由title值更改触发。例如: val viewModel=MyViewModel() viewModel.title.value=“123” Assert.assertEquals(vie

我有这样一个ViewModel:

类MyViewModel{
val title=MutableLiveData()
val onTitleError:LiveData=Transformations.map(标题,this::validateTitle)
}
问题是在单元测试
转换期间执行时。map
永远不会由
title
值更改触发。例如:

val viewModel=MyViewModel()
viewModel.title.value=“123”
Assert.assertEquals(viewModel.onTitleError.value、R.string.myError)
我将此规则用于LiveData测试:

@规则
var liveDataRule:TestRule=InstantTaskExecutorRule()
在检测测试或正常运行期间执行时,一切正常

以@ianhanniballake-answer为例,我刚刚添加了
viewModel.ontitlerror.observeForever{}
,然后上面的代码片段应该如下所示:

val viewModel=MyViewModel()
viewModel.onTitleError.ObserveForRever{}
viewModel.title.value=“123”
Assert.assertEquals(viewModel.onTitleError.value、R.string.myError)

你需要
观察
你的
ontitlerror
LiveData,让它填充它的
你需要
观察
你的
ontitlerror
LiveData,让它填充它的

你在哪里观察你的
ontitlerror
。它提供了一个
TestObserver
,它不仅可以处理你的
observeforver()
位,还可以添加一系列关于观察者所看到的内容的断言。非常好的lib@commonware。你在哪里观察你的
onTitleError
?FWIW,我是它的粉丝。它提供了一个
TestObserver
,它不仅可以处理您的
observeforver()
位,还可以添加一系列关于观察者所看到的内容的断言。非常好的库,@commonware。