我是Android测试的新手,如果你们中的一些人能帮助我,我将不胜感激。我正在使用robotium作为自动化测试框架(到目前为止还不错),但我不知道如何使用mockito或Easy Mock在测试中添加一些Mock。我真的很纠结。有人能给我举一些如何实现这一目标的简单例子吗?
提前感谢
简短回答/意见
我不建议使用Mockito进行Android单元测试。Android环境让人觉得太复杂了,无法模仿。Android单元测试的基本方法是在模拟器中运行它们。因此,许多容器类已经存在,不需要进行模拟。
长答案
我对Android单元测试的世界也相对陌生。我写了很长时间的服务器端单元测试,发现Mockito是简化单元测试的最佳工具之一。Mockito在模拟复杂对象的行为方面非常有用。这有助于打破测试中的代码对容器(例如servlet容器或OSGI容器)或其他复杂协作器(例如数据库连接类)的依赖关系。
当您的容器/合作者具有定义良好的接口时,这种模拟效果很好。
几个月前,我决定尝试使用Android开发Mockito。我发现,如果你至少有1.9.5和dexmaker,Mockito确实有效。Dexmaker处理Android的Dalvik虚拟机的运行时字节码生成。
我在第一次测试中尝试的第一件事是模拟android.content.Context,我发现这很难。首先,我试图只模拟我直接调用的方法,但后来我发现这些方法调用了其他依赖于应用程序资源的方法。。。最终,嘲讽变得如此复杂,以至于它一开始就破坏了使用Mockito的目的。
所以我让步了,开始使用Android单元测试助手类(AndroidTestCase,ActivityUnitTestCase,…)。我很沮丧,因为我现在不得不依赖模拟器,这意味着测试执行缓慢。也许Mockito在这种类型的测试中仍然有一席之地。它可能有助于模拟外部数据源之类的东西。
不管怎样,这只是我的2美分。