0

我目前有各种AndroidTestCases使用Mockito和模块dexmaker-mockito。我现在正在尝试Robolectric使用robolectric plugin. 我的一切运行良好,除了当我尝试在没有争论的情况下模拟方法时,我得到了IllegalArgumentExceptionfrom Dexmaker。删除dexmaker-mockito依赖项并使用模拟版本1.9.0而不是1.9.5会导致错误消失,但会导致我所有的 AndroidTestCases 失败。反正gradle有没有从我的测试用例中dexmaker-mockito排除?robolectric或者有谁知道从android studio运行android单元测试和robolectric单元测试的任何其他方式?

Error: java.lang.IllegalArgumentException at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke

更新

我尝试过gradle-android-test-plugin但无法在不更改to的版本并从我的依赖项中删除的情况下robolectric-gradle-plugin摆脱 , 。IllegalArguementExceptionmockitio1.9.0dexmakerdexmaker-mockito

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

这次我最终遵循了此处的指南,当我从命令行运行测试时错误消失了,但从我发现奇怪的 android studio 运行时仍然存在。再次将 mockitio 的版本更改为 1.9.0 并从我的 Android 应用程序的依赖项中删除dexmaker,删除了错误。dexmaker-mockito现在,在找到更好的答案之前,我将满足于无法从 android studio 运行单元测试。

4

1 回答 1

0

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

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

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

于 2014-09-23T10:22:38.790 回答