Я пытаюсь выполнить модульное тестирование моей ViewModel, которая отправляет некоторые вещи обратно в действие через LiveData
, но когда я запускаю метод, который устанавливает значение liveata, я получаю ошибку
java.lang.RuntimeException: метод getMainLooper в android.os.Looper
не издевается.
Я прочитал несколько постов и статей, все, что вам нужно сделать, это добавить Rule
для InstantTaskExecutorRule
, и это должно просто сработать, но я сделал это, и я все еще получаю ошибку.
Это мой юнит тест
val observer: Observer<String> = mock(Observer::class.java) as Observer<String>
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
@Test
fun testSearchDataValidationFailureMissingSearchLocation() {
val viewModel = MoveViewModel()
val param1= 0
val param2= 1
val param3= "1234"
viewModel.dialogMessageLiveData.observeForever(observer)
Assert.assertFalse(viewModel.validateSearchData(param1, param2, param3))
verify(observer).onChanged("Data not valid")
}
Это метод, который я пытаюсь проверить
fun validateSearchData(param1:Int,param2:Int,param3:String):Boolean{
var valid:Boolean = false
if(param1== 0 || param2== 0 || param3.isBlank()){
dialogMessageLiveData.postValue("Data not valid")
}else{
valid = true
}
return valid
}
Я не уверен, что еще нужно сделать, чтобы это исправить, кто-нибудь может предложить другое решение?