android - java.lang.IllegalArgumentException:在 Android P 上,类注入只能应用于 BaseDexClassLoader
问题描述
我们的应用程序处于开发过程中,我们遵循 MVP 方法,通过在我们的 Presenter 上编写单元测试用例来提供更好的测试覆盖率。
在 Android P 之前,我们的测试用例执行没有任何问题,但现在在 Android P 发布之后,当我们尝试在 Pixel 2 (Android P) 上运行测试用例时,我们的测试用例在以下代码行中失败 -
private lateinit var mPackageInfo: PackageInfo
mPackageInfo = Mockito.mock(PackageInfo::class.java)
带有以下错误消息 -
org.mockito.exceptions.base.MockitoException:Mockito 无法模拟此类:类 android.content.pm.PackageInfo。
Mockito 只能模拟非私人和非最终课程。
底层异常:java.lang.IllegalArgumentException:在Android P上,类注入只能应用于BaseDexClassLoader:net.bytebuddy.dynamic.loading.MultipleParentClassLoader@a3838ec
我该如何解决这个问题?
解决方案
通过参考这里https://github.com/mockito/mockito/issues/1376
尝试使用版本2.18.3
testImplementation 'org.mockito:mockito-core:2.18.3'
androidTestImplementation 'org.mockito:mockito-android:2.18.3'
推荐阅读
- javascript - 如何在 Javascript 中不可变地更新地图
- python - python 2.7将'\'添加到字符串
- prisma - 找不到记录时如何获取带有 Prisma2 错误的空数组
- android - android BottomAppBar 有额外的左侧填充
- javascript - 页面加载时在 iframe 中加载随机页面
- node.js - 如何在节点服务器上读取/写入 mongodb 数据库
- mysql - 如果它与另一个表行字符串匹配,则获取一个表行
- amazon-web-services - 我只想从特定用户上传文件并允许任何人(公共)在 Amazon S3 上查看它
- android - 在 Android 应用程序中使用 cookie
- ios - 什么是 iPhone 11 Pro 中的 100% Focus Pixels