gpt4 book ai didi

android - Robolectric + Mockito

转载 作者:行者123 更新时间:2023-11-29 15:43:52 25 4
gpt4 key购买 nike

尝试使用 Robolectric 构建 android 单元测试。每次我需要模拟一个属于我的项目的方法时,创建一个 Shadow 类就变得有点繁重了。我认为在这种情况下使用 Mockito 会更容易、更轻便。

但是,当我尝试使用 Mockito 方法时,出现错误 java.lang.IllegalArgumentException: dexcache == null(并且找不到默认值;考虑设置 'dexmaker.dexcache' 系统属性)

为了解决这个问题,我认为需要通过调用来设置 dexcache 属性

System.setProperty("dexmaker.dexcache",getInstrumentation().getTargetContext().getCacheDir().getPath());

但我不知道在 Robolectric 中可以调用 getInstrumentation。请提出一种推荐的方法来模拟我在 Robolectric 中的项目的方法。

最佳答案

您可以将 Mockito 与 Robolectric 一起使用;但是,您需要确保添加“正常”的 Mockito 依赖项,而不是 Mockito-Android 或 dexmaker 依赖项。

Mockito 通过生成类来工作;在桌面 JRE(例如您的单元测试环境)上,这意味着生成 Java CLASS 文件,但在 Android 设备和模拟器上,这意味着生成 DEX 文件。但是,如果 DexMaker 存在于类路径中,Mockito 将机会主义地使用它,即使像 Robolectric 单元测试那样在模拟器之外运行时也是如此。调整您的依赖项以确保不包含 dexmaker,这将避免 dexmaker 或 dexcache 出现任何问题。

关于android - Robolectric + Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com