我目前有各种AndroidTestCases
使用Mockito
和模块dexmaker-mockito
。我现在正尝试使用Robolectric
添加robolectric plugin
个测试用例。
我的一切运行正常,但是当我尝试模拟没有争论的方法时,我从IllegalArgumentException
得到Dexmaker
。删除dexmaker-mockito
依赖项并使用mockito版本1.9.0
而不是1.9.5
会导致错误消失,但会导致我的所有AndroidTestCases失败。在gradle
中是否有dexmaker-mockito
从我的robolectric
测试用例中排除?或者有没有人知道从android工作室运行android单元测试和robolectric单元测试的任何其他方式?
Error:
java.lang.IllegalArgumentException at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke
更新
我尝试了gradle-android-test-plugin
和robolectric-gradle-plugin
,但未将IllegalArguementException
的版本更改为mockitio
并删除{{}}来自我的依赖项的1}},1.9.0
。
我尝试了guide但是无法让Android Studio识别我的源目录而不将它们添加到破坏我的构建的主要或测试源集,因为没有为那些gradle任务编译robolectric而我不想要它是。
我最终跟随指南here这次当我从命令行运行测试时错误消失但是从android studio运行时我发现奇怪了。再次将mockitio的版本更改为1.9.0并从我的Android应用程序中的依赖项中删除dexmaker
,dexmaker-mockito
删除了错误。现在我会满足于无法从android studio运行单元测试,直到找到更好的答案。
答案 0 :(得分:0)
如果我正确理解dexmaker-mockito应该做什么,它意味着与在设备上运行的Android单元测试一起使用,因此它对您的Android测试用例有好处。
Robolectric测试在JVM上运行,应该作为JUnit测试运行,而不是Android测试。他们不应该使用dexmaker-mockito,因为他们从未部署到设备,他们可以使用普通的Mockito库,并设置范围进行测试。
我认为你可能无法混合两者,你可能有两个将你的机器人测试与Android单元测试分开。