Лупер не издевается ViewModel MockitoJUnitRunner - PullRequest
0 голосов
/ 16 октября 2018

Я не могу найти решение, которое поможет мне проверить мои ViewModel с.Я продолжаю читать, что достаточно добавить правило:

 @get:Rule
 var rule: TestRule = InstantTaskExecutorRule()

, но я продолжаю получать:

java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.

Мой тестовый класс выглядит следующим образом:

@RunWith(MockitoJUnitRunner::class)
class MainActivityViewModelTest {

@get:Rule
val taskExecutorRule = InstantTaskExecutorRule()

val weatherProviderMock = mock<WeatherProvider>()
val sut = MainActivityViewModel(weatherProviderMock, mock(), mock(),     mock())

    @Test
    fun shouldPass() {
        assertTrue(true)
    }
}

У меня также есть следующее в моем приложении build.gradle:

testImplementation 'junit:junit:4.12'
testImplementation "android.arch.core:core-testing:1.1.1"
testImplementation 'org.mockito:mockito-core:2.22.0'
testImplementation 'org.assertj:assertj-core:3.9.1'
testImplementation 'com.nhaarman:mockito-kotlin:1.6.0'
testImplementation 'org.mockito:mockito-inline:2.22.0'

Любая помощь высоко ценится.

@ Chris

Скажите, пожалуйста, что-то не так с кодом ниже (согласно вашим предлагаемым решениям):

lateinit var sut: SummaryViewModel
@get:Rule
val rule: TestRule = InstantTaskExecutorRule()

@Before
fun setUp() {
    sut = SummaryViewModel(calculatorMock, mock(), mock(), mock(), providerMock, mock())
}

@Test
fun `live data test`() {
    val someLiveData = sut.someLiveDataValue
    assertThat(true).isTrue()
}
...