小编Arp*_*ogi的帖子

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

我们的应用程序处于开发过程中,我们遵循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


我该如何解决这个问题?

android unit-testing kotlin android-studio android-9.0-pie

10
推荐指数
1
解决办法
866
查看次数

Kotlin:在“ null”作弊时如何使用其他条件让let块使用

我在代码中用let块替换了所有空检查,

1.带空检查的代码示例:

if(someValue != null){//run if someValue is not null}
else {//run if someValue is null}
Run Code Online (Sandbox Code Playgroud)

2.如果进行空检查,则使用let-run块后的代码库;

var someValue : String? = null
someValue = "SOF"

someValue?.let {safeSomeValue->
//This code block will run only if someValue is not null
}?.run {
//This code block should run only when if someValue is null, like else condition
}
Run Code Online (Sandbox Code Playgroud)

现在,让运行块的问题在于,即使someValue不为null,两个代码块也在运行。因此,我无法将代码示例1中if-else条件的行为复制到代码示例2中的run-let条件。

预期的行为是根据value为null或not null来执行let或run代码块。

null kotlin

3
推荐指数
4
解决办法
70
查看次数