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

时间:2019-04-09 18:44:08

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

我有一个View Model扩展了AndroidViewModel

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

我想对其进行单元测试,但是我无法弄清楚如何模拟Application类

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

        .....
    }

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

  

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

     

Mockito只能模拟非私有和非最终类。

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

编辑:

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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