java.lang.IllegalArgumentException: 在Android P上,一个class注入只能应用于BaseDexClassLoader
java.lang.IllegalArgumentException: On Android P, a class injection can only be applied to BaseDexClassLoader
我们的应用程序正在开发过程中,我们遵循 MVP 方法,通过在我们的演示者上编写单元测试用例来提供更好的测试覆盖率。
在 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 cannot mock this
class: class android.content.pm.PackageInfo.
Mockito can only mock non-private & non-final classes.
Underlying exception : java.lang.IllegalArgumentException: On Android
P, a class injection can only be applied to 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'
我们的应用程序正在开发过程中,我们遵循 MVP 方法,通过在我们的演示者上编写单元测试用例来提供更好的测试覆盖率。
在 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 cannot mock this class: class android.content.pm.PackageInfo.
Mockito can only mock non-private & non-final classes.
Underlying exception : java.lang.IllegalArgumentException: On Android P, a class injection can only be applied to 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'