首页 > 解决方案 > 使用 Robolectric 和 Mockito 模拟 PackageManager

问题描述

我的 sut 类中有一个调用 PackageManager 的方法:

var intent = packageManager.getLaunchIntentForPackage(PACKAGE_NAME)

我想模拟它以便能够对其进行单元测试。有没有办法使用 Robolectric 或/和 Mockito 来做到这一点?谢谢

标签: androidunit-testingmockitorobolectric

解决方案


这是 AndroidX、Robolectric 和 Mockito 的示例

val context = spy(ApplicationProvider.getApplicationContext())

val packageManager = mock(PackageManager::class.java)
doReturn(packageManager).`when`(context).packageManager
doReturn(mock(Intent::class.java)).`when`(packageManager).getLaunchIntentForPackage(anyString())

推荐阅读