4

我是 Android 测试的新手,如果你们中的一些人能帮助我,我将不胜感激。我使用robotium 作为自动化测试框架(到目前为止还不错),但我不知道如何使用mockito 或Easy Mock 在我的测试中添加一些模拟。我真的坚持这一点。有人可以给我一些简单的例子来说明如何实现这一目标吗?

提前致谢

4

1 回答 1

2

简答/意见

我不推荐使用 Mockito 进行 Android 单元测试。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 在这种类型的测试中仍然占有一席之地。它可能对模拟诸如外部数据源之类的东西很有用。

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

于 2012-12-17T23:25:49.510 回答