android - 在测试期间使用 Mockito 模拟我类的一种方法

标签 android unit-testing junit mockito

我正在尝试使用 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/

相关文章:

android - Xamarin - Visual Studio 卡在 zipalign.exe

unit-testing - 运行两个 JUnit 测试套件的分离

java - Struts2单元测试给出错误: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException

javascript - 类型错误 : dispatch is not a function when I try to test a method using JEST

java - 在JUnit中调用ojdbc

java - Spring 3 替换 isDisabledInThisEnvironment

android - 在应用程序中解压缩 .zip 文件 |加速器 |钛

android - 如何将音量 slider 添加到 Android 操作栏?

java - 如何循环 OnCompletionListener

android - 在 Android Studio 3.0 中获取 Android 测试代码覆盖率