尝试使用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也会适时使用DexMaker,即使在Robolectric单元测试中在模拟器之外运行时也是如此。调整您的依赖关系以确保不包括dexmaker,这将避免dexmaker或dexcache出现任何问题。

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

10-13 04:39