1.当使用Mockito.verify(mock).performLogin("chenyou", anyString());这个语句时报如下错误,正确的做法是
Mockito.verify(mock).performLogin(eq("chenyou"),anyString());当使用匹配器时,所有参数必须由匹配器提供。
2.当出现如下错误的时候有两种情况:一种是在该方法内调用mock对象方法之前已经return了,一种是mock对象没有替换掉正式代码里的对象
3.神坑:Robolectric配置问题
- 神坑1:编译不通过,编译冲突
Error:Conflict with dependency 'com.google.guava:guava' in project ':app'. Resolved versions for app (18.0) and test app (20.0) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
解决办法:
testCompile('org.robolectric:robolectric:3.3.2', {
exclude group: 'com.google.guava', module: 'guava'
})
神坑2:
- 出现如上No such manifest file: build\intermediates\bundles\debug\AndroidManifest.xml的办法如下:
第一步:
第二步:
如果步骤2没有自动设置这个的话,这个也需要手动设置
- 第二个神坑级Robolectric配置问题
解决办法:添加@Config(constants = BuildConfig.class) 如下图:
4.java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.
这个问题有点奇怪,这个测试类中我并没有用到Robolectric和Mock但是运行时报错了,解决方式是在类名前面添加这两行代码
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)