如何模拟应用程序 class 以对 ViewModel 进行单元测试
How to mock Application class to unit test ViewModel
我有一个 View Model
扩展 AndroidViewModel
class MoveViewModel(application: Application): AndroidViewModel(application),CoroutineScope{
....
}
我想对其进行单元测试,但我不知道如何模拟应用程序 class
@Test
fun testSearchDataValidation() {
val application = Mockito.mock(Application::class.java)
val viewModel = MoveViewModel(application)
.....
}
但是当我去 运行 测试时我得到一个错误 Mockito
不能 mock Application
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this
class: class android.app.Application.
Mockito can only mock non-private & non-final classes.
如何模拟应用程序 class 以将其传递给我的视图模型?
编辑:
这是@farhanjk 建议的我的文件夹层次结构
Mockito.mock(Application::class.java)
在您的 test
文件夹中,创建如下层次结构:
在org.mockito.plugins.MockMaker
文件中,只放一行文本mock-maker-inline
。
Mock the unmockable: opt-in mocking of final classes/methods
我有一个 View Model
扩展 AndroidViewModel
class MoveViewModel(application: Application): AndroidViewModel(application),CoroutineScope{
....
}
我想对其进行单元测试,但我不知道如何模拟应用程序 class
@Test
fun testSearchDataValidation() {
val application = Mockito.mock(Application::class.java)
val viewModel = MoveViewModel(application)
.....
}
但是当我去 运行 测试时我得到一个错误 Mockito
不能 mock Application
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this class: class android.app.Application.
Mockito can only mock non-private & non-final classes.
如何模拟应用程序 class 以将其传递给我的视图模型?
编辑:
这是@farhanjk 建议的我的文件夹层次结构
Mockito.mock(Application::class.java)
在您的 test
文件夹中,创建如下层次结构:
在org.mockito.plugins.MockMaker
文件中,只放一行文本mock-maker-inline
。
Mock the unmockable: opt-in mocking of final classes/methods