java.lang.IllegalArgumentException:在Android P上,类注入只能应用于BaseDexClassLoader

Arp*_*ogi 10 android unit-testing kotlin android-studio android-9.0-pie

我们的应用程序处于开发过程中,我们遵循MVP方法,通过在演示者上编写单元测试用例来提供更好的测试覆盖率.

在Android P之前,我们的测试用例没有任何问题,但是现在在Android P发布后我们尝试在Pixel 2(Android P)上运行测试用例时,我们的测试用例在以下代码行中失败了 -

private lateinit var mPackageInfo: PackageInfo
mPackageInfo = Mockito.mock(PackageInfo::class.java)
Run Code Online (Sandbox Code Playgroud)

以下错误消息 -

org.mockito.exceptions.base.MockitoException:Mockito无法模拟此类:class android.content.pm.PackageInfo.

Mockito只能模拟非私人和非最终类.

基础异常:java.lang.IllegalArgumentException:在Android P上,类注入只能应用于BaseDexClassLoader:net.bytebuddy.dynamic.loading.MultipleParentClassLoader@a3838ec


我该如何解决这个问题?

shi*_*hen 6

通过参考这里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'
Run Code Online (Sandbox Code Playgroud)

  • 啊,我有同样的问题!从2.21.0降级到2.18.3,它解决了我的问题... (2认同)