android - Need example of Robolectric with Mockito to write the unit test case
问题描述
How to use with Mocking (Mockito) with Robolectric can any one suggest me and i want to write the unit test cases for an API call also, i try with Robolectric but it only runs the label and actions but for API calls how to write the unit test in Android Test package,Please help me out
解决方案
据我所知,您不会将 Mockito 与 Robolectric 结合起来在 Android 上进行测试。
您使用 Robolectric 是为了不必在模拟器或物理设备上测试您的仪器测试,而是在JVM上测试它。那是Robolectric。这使您还可以访问 android 框架,并且速度较慢。
另一方面,Mockito 是一个库,它允许您 :mock:单元测试中的依赖项。单元测试的目的是测试您希望测试的特定软件实体的行为,特别是其逻辑。由于它无法访问 android 框架(它不需要),因此速度相当快。
编辑:
它实际上更复杂。您可以将 Robolectric 与 Mockito 一起使用(通过将 Mockito 规则作为 Runner 引入 - 然后您有 2 个 runner,一个 @RunWith(AndroidJunit4) - robolectric 一个,带有 MockitoRule)。而且您可以对需要使用 Robolectric 访问 android SDK 的东西进行单元测试,而无需实际启动活动……所以这些是我可以在 Android 上提出的测试配置:
(/test) 简单的 JUnit
(/test) JUnit + Mockito - 设计模式中的经典单元测试
(/test) AndroidJUnit (Robolectric) + Mockito 没有启动活动- 需要 android sdk 实例和模拟的单元测试
(/test) **AndroidJUnit (Robolectric) - 启动活动,你用 espresso 测试 UI
- (/instrumentedTest) AndroidJUnit - 同样的东西,用 espresso 测试 ui
或者你也可以有 sharedTest。两者只有一个文件夹。有了这个,您也许可以选择在设备和虚拟机上运行一个测试,我只是不确定如何。也许氮气会在未来推出这个选项。 https://blog.danlew.net/2015/11/02/sharing-code-between-unit-tests-and-instrumentation-tests-on-android/
现在,您可以为特定课程设置测试环境的方法很多。我希望 Nitrogen 项目能够简化这个决策并提供一个很好的文档。
编辑
其实我写这篇评论的时候是错的。您可以在 robolectric 测试中模拟依赖项。您可以通过依赖注入(Koin,Dagger 2)并创建具有相同抽象的不同依赖图来做到这一点。(复杂,在一些博客中查看...这里不再详细说明)
推荐阅读
- ruby-on-rails - 向 Rails FormObject 添加通用(未绑定到键或字段)错误消息
- javascript - 访问由 Object.create 创建的对象中的父(超级)方法
- sql - SQL - 所有列的不同记录
- javascript - 获取 Youtube 视频格式
- python - Django 2.1 链接作为 DjangoAdmin 列表中的字段
- javascript - jQuery load() 函数没有像预期的那样工作
- mysql - 查找一个月中具有最大数据值的特定日期(每组 2 倍最大 n)
- jquery - slideDown/slideUp 和旋转图像
- hyperledger-composer - Hyperledger Composer 中的交易返回类型
- c# - 使用 reader 从表中查询数据