Robotium与Mockito或Easy Mock

4
我是 Android 测试的新手,希望有人能帮助我。目前我正在使用 Robotium 作为自动化测试框架(目前为止还不错),但我不知道如何使用 Mockito 或 Easy Mock 来添加一些 mock 到我的测试中。我真的卡在这个问题上了。请问有人能给我一个简单的例子来帮助我吗?
谢谢!

1
我认为您混淆了验收测试和单元测试。您想使用Robotium测试模拟什么? - Eugen Martynov
请尝试阅读这篇文章 - koljaTM
1个回答

2

简短回答/个人观点

我不建议在Android单元测试中使用Mockito。Android环境过于复杂,难以进行模拟。Android单元测试的基本方法是在模拟器中运行它们,因此许多容器类已经存在,不需要进行模拟。

详细回答

我也是相对较新的Android单元测试世界中的一员。我长期编写服务器端单元测试,并发现Mockito是简化单元测试的最佳工具之一。Mockito在模拟复杂对象的行为方面非常有帮助。这有助于打破代码测试中所依赖的容器(例如Servlet容器或OSGI容器)或其他复杂协作者(例如数据库连接类)的任何依赖关系。

当您的容器/协作者具有明确定义的接口时,这种模拟效果很好。

几个月前,我决定尝试在Android开发中使用Mockito。我发现如果您拥有至少1.9.5和dexmaker,则Mockito可以正常工作。Dexmaker处理Android Dalvik VM的运行时字节码生成。

我在我的第一个测试中尝试的第一件事是模拟android.content.Context,但我发现这很困难。首先,我尝试模拟仅直接调用的方法,但然后我发现这些方法调用了其他具有依赖于应用程序资源等的依赖关系的方法...最终,模拟变得非常复杂,这违背了使用Mockito的初衷。

因此,我放弃了并开始使用Android单元测试助手类(AndroidTestCase、ActivityUnitTestCase等)。我感到沮丧的是,现在我必须依赖于模拟器,这意味着测试执行速度很慢。也许Mockito在这种类型的测试中仍然有一席之地。它可能对模拟外部数据源等事物有用。

总之,这只是我的个人看法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接