机器人与Mockito或简单的模拟

时间:2012-11-28 11:29:16

标签: android mockito robotium easymock

我是Android测试的新手,如果你们中的一些人可以帮助我,我真的很感激。 我使用robotium作为自动化测试框架(到目前为止一直很好),但我不知道我如何使用mockito或Easy Mock为我的测试添加一些模拟。我真的很困惑。有人能给我一些关于如何实现这个目标的简单例子吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

简答/意见

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

长答案

我对Android单元测试的世界也相对较新。我一直在编写服务器端单元测试,并发现Mockito是简化单元测试的最佳工具之一。 Mockito非常有助于模拟复杂对象的行为。这有助于打破您的测试代码可能对容器(例如servlet容器或OSGI容器)或其他复杂协作者(例如数据库连接类)的依赖性。

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

几个月前,我决定尝试使用Android开发的Mockito。我发现Mockito确实有用,如果你有至少1.9.5和dexmaker。 Dexmaker为Android的Dalvik VM处理运行时字节码生成。

我在第一次测试中尝试的第一件事是模拟 android.content.Context ,我发现那是很难的。首先,我试图仅模拟我直接调用的方法,但后来我发现这些方法调用了其他依赖于应用程序资源的方法,...最终,模拟变得如此复杂以致于它在第一次使用Mockito时失败了的地方。

所以我放弃并开始使用Android单元测试辅助类(AndroidTestCase,ActivityUnitTestCase,...)。我很沮丧,我现在不得不依赖于模拟器,这意味着SLOW测试执行。也许Mockito仍然在这种类型的测试中占有一席之地。它可能对模拟外部数据源等内容很有用。

无论如何,这只是我的2美分。