android - 如何模拟应用程序类来单元测试 ViewModel

标签 android unit-testing mockito android-architecture-components

我有一个 View Model扩展 AndroidViewModel

class MoveViewModel(application: Application): AndroidViewModel(application),CoroutineScope{
    ....
}

我想对它进行单元测试,但我不知道如何模拟应用程序类
@Test
    fun testSearchDataValidation() {
        val application = Mockito.mock(Application::class.java)
        val viewModel = MoveViewModel(application)

        .....
    }

但是当我去运行测试时,我得到一个错误 Mockito无法模拟 Application

org.mockito.exceptions.base.MockitoException: Mockito cannot mock this class: class android.app.Application.

Mockito can only mock non-private & non-final classes.



如何模拟 Application 类以将其传递给我的 View 模型?

编辑:

这是@farhanjk 建议的我的文件夹层次结构

enter image description here

最佳答案

Mockito.mock(Application::class.java)
在您的 test文件夹,创建如下层次结构:

enter image description here

org.mockito.plugins.MockMaker文件,只需输入一行文本 mock-maker-inline .

Mock the unmockable: opt-in mocking of final classes/methods

关于android - 如何模拟应用程序类来单元测试 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55599337/

相关文章:

android - 实时更新仅返回更改的文档而不是整个查询

java - 如何模拟已注入(inject)依赖项的父类(super class)

java - Mockito异常

unit-testing - 如何对使用插件方法的 grails 服务进行单元测试?

java - 同时使用 junit 断言和 mockito 验证

android - Firebase 云消息传递 : how to send data message to all users?

java - 如何从 oncreate 函数调用 JSONObject 函数?

java - 如何从 ftp 服务器获取文件的路径?

c# - 如何在单元测试中比较列表

android - 如何在单元测试中使viewModelScope等待挂起功能