如何模拟 Application 类以对 ViewModel 进行单元测试

tyc*_*czj 5 android unit-testing mockito android-architecture-components

我有一个View Model扩展AndroidViewModel

class MoveViewModel(application: Application): AndroidViewModel(application),CoroutineScope{
    ....
}
Run Code Online (Sandbox Code Playgroud)

我想对它进行单元测试,但我不知道如何模拟 Application 类

@Test
    fun testSearchDataValidation() {
        val application = Mockito.mock(Application::class.java)
        val viewModel = MoveViewModel(application)

        .....
    }
Run Code Online (Sandbox Code Playgroud)

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

org.mockito.exceptions.base.MockitoException:Mockito 无法模拟此类:类 android.app.Application。

Mockito 只能模拟非私人和非最终课程。

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

编辑:

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

在此处输入图片说明

far*_*njk 8

Mockito.mock(Application::class.java)

在您的test文件夹中,创建如下层次结构:

在此处输入图片说明

org.mockito.plugins.MockMaker文件中,只需放置一个单行文本mock-maker-inline

模拟不可模拟的:选择模拟最终类/方法