Модульное тестирование LiveData android.os.Looper не издевались - PullRequest
3 голосов
/ 10 апреля 2019

Я пытаюсь выполнить модульное тестирование моей 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
    }

Я не уверен, что еще нужно сделать, чтобы это исправить, кто-нибудь может предложить другое решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...