首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >罗珀没有嘲笑ViewModel MockitoJUnitRunner

罗珀没有嘲笑ViewModel MockitoJUnitRunner
EN

Stack Overflow用户
提问于 2018-10-16 09:50:12
回答 2查看 3.9K关注 0票数 1

我找不到一个解决方案来帮助我测试我的ViewModels。我一直读到,它足以添加规则:

代码语言:javascript
复制
 @get:Rule
 var rule: TestRule = InstantTaskExecutorRule()

但我一直在想:

代码语言:javascript
复制
java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.

我的测试课程现在看起来是这样的:

代码语言:javascript
复制
@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中也有以下内容:

代码语言:javascript
复制
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

请您告诉我下面的代码是否有问题(按照您建议的解决方案):

代码语言:javascript
复制
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()
}
EN

回答 2

Stack Overflow用户

发布于 2019-12-18 06:10:28

您可以使用ViewModel延迟初始化Kotlin代表

代码语言:javascript
复制
    val viewModel by lazy { 
        MainActivityViewModel(weatherProviderMock, mock(), mock()...)
    }
票数 0
EN

Stack Overflow用户

发布于 2021-09-08 21:36:29

如果在我的例子中没有任何一个解决方案起类似的作用,如果您使用的是更高版本的gradle,并且您使用的是androix,请确保在您的构建Gradle中从androix导入。

实现‘androidx.arch.core:核心-测试:$version’

而不是

实现‘android.arch.core:核心-测试:$version’

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52832676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档