从Android工作室运行robolectric和android单元测试

时间:2014-09-23 05:01:20

标签: android android-gradle robolectric robolectric-gradle-plugin

我目前有各种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-pluginrobolectric-gradle-plugin,但未将IllegalArguementException的版本更改为mockitio并删除{{}}来自我的依赖项的1}},1.9.0

我尝试了guide但是无法让Android Studio识别我的源目录而不将它们添加到破坏我的构建的主要或测试源集,因为没有为那些gradle任务编译robolectric而我不想要它是。

我最终跟随指南here这次当我从命令行运行测试时错误消失但是从android studio运行时我发现奇怪了。再次将mockitio的版本更改为1.9.0并从我的Android应用程序中的依赖项中删除dexmakerdexmaker-mockito删除了错误。现在我会满足于无法从android studio运行单元测试,直到找到更好的答案。

1 个答案:

答案 0 :(得分:0)

如果我正确理解dexmaker-mockito应该做什么,它意味着与在设备上运行的Android单元测试一起使用,因此它对您的Android测试用例有好处。

Robolectric测试在JVM上运行,应该作为JUnit测试运行,而不是Android测试。他们不应该使用dexmaker-mockito,因为他们从未部署到设备,他们可以使用普通的Mockito库,并设置范围进行测试。

我认为你可能无法混合两者,你可能有两个将你的机器人测试与Android单元测试分开。