我正在尝试使用 JUnit 和 Mockito 为 Android 编写单元测试(未检测)。
一些上下文:我正在测试一个严重依赖于 View 的类,我不能/不想在测试期间实际膨胀 View 。有一次,我的待测试类想要使用 View 的宽度,我已经定义了一个(公共(public))方法,该类正在使用该方法在运行时获取宽度 (getWidth()
) .
在我的测试中,我只想使用 Mockito 模拟 getWidth()
方法。 (同时让类(class)的其他人以同样的方式行事)。澄清一下:我的类中的一个方法调用 getWidth()
,我希望它在测试期间返回一个模拟值。
所以我尝试使用 Mockito.spy()
方法实例化类,但我不知道这是否是正确的方法(它不起作用)或者是否有其他方法我应该做的。
我当前的代码:
mGraph = Mockito.spy(new Graph(xAxis, leftAxis, null, false, new Graph.Style(), curve));
Mockito.when(graph.getGraphWidth()).thenReturn(400);
我收到以下错误消息,但我不知道它是否相关或只是另一个错误:
java.lang.IllegalArgumentException: dexcache == null(并且找不到默认值;考虑设置“dexmaker.dexcache”系统属性)
最佳答案
我通过更改我的 build.gradle 解决了这个问题
testCompile ('junit:junit:4.12',
'com.google.dexmaker:dexmaker-mockito:1.0',
'com.google.dexmaker:dexmaker:1.0')
对此
testCompile ('junit:junit:4.12',
'org.mockito:mockito-core:1.9.5')
我猜这可能是因为 dex 依赖项只能与 androidTestCompile
标签一起使用。
关于android - 在测试期间使用 Mockito 模拟我类的一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802016/