想知道为Android应用程序和库编写单元测试用例的更好选择:使用Robolectric库还是坚持使用Android测试框架。我想在命令行中运行测试套件,并且希望它独立于配置模拟器的需要,或者让设备附带构建机器。你们中的任何一个人都对这些或者更好的东西进行了比较分析?您的经验将帮助我决定更好的解决方案。Android单元测试用例自动化:Robolectric库与Android测试框架
44
A
回答
93
我用一个分层系统,在这里我更喜欢较早层在可能的情况:
- 纯单元测试。我尝试尽可能地使代码尽可能独立于Android API,然后使用可在任何JVM上运行的“纯”单元测试。这些测试是最快的,它有助于保持代码不需要是特定于Android的便携式应用程序。
- Robolectric支持的单元测试。在我的代码对Android API只有很小的依赖性的情况下,Robolectric阴影可以满足这一点,我使用Robolectric进行测试。与纯粹的测试相比,Robolectric有更多的设置时间,但它比在模拟器上启动/运行还要快。
- Android框架测试。 Robolectric没有削减它 - 要么是因为阴影不存在,要么是因为我大量使用Android API(因此想要测试真实的东西) - 我编写的测试在仿真器/设备上运行默认框架。
层次的要点是尽可能简化事情,这样可以使整个套件更快,并且有助于促进更干净的代码。
5
我曾在这两个,我发现了什么是: -
1)Robolectric不支持API 19,这是它的文件中提到 - http://robolectric.org/eclipse-quick-start/。这是一个很好的缺点。
2)Robolectric在JVM上运行,不在DVM上。所以我们不能 检测到,在该特定时间GPS是否启用设备或不 等。我们只能通过我们的预先决定的价值。
3)Robolectric中的代码编写比junit复杂,特别是对于 片段存在很多复杂性和问题。
4)Robolectric需要外部罐和配置,并且对于junit测试 我们不需要任何外部库。 5)Robolectric运行速度更快,因为它运行在JVM上,但这也有缺点,我们无法在设备上看到UI,屏幕代码 正在执行。
对于Android,我喜欢jUnit测试。
相关问题
- 1. Robolectric与Android测试框架
- 2. Android的单元测试 - 与Robolectric
- 3. 使用Robolectric测试Android库
- 4. Android的单元测试与JUnit框架
- 5. Android自动化测试使用JUnit和集成测试框架
- 6. Magento测试自动化框架测试用例创建
- 7. 测试自动化框架
- 8. Android单元测试自己的android库
- 9. Android中的单元测试框架
- 10. Mono Android。单元测试框架
- 11. 无法与调试器Android Studio中运行Robolectric单元测试
- 12. Android测试框架
- 13. Android的自动GUI测试框架
- 14. Android:使用Robolectric和Mockito单元测试Android应用程序
- 15. Android测试自动化
- 16. 测试与Robolectric&
- 17. Android与Maven单元测试
- 18. Android:单元测试与gradle
- 19. 升压单元测试框架没有测试用例
- 20. 单元测试RecyclerView OnItemTouchListener Robolectric
- 21. 获取NullPointerException使用Robolectric进行单元测试Android活动
- 22. Android + Robolectric测试错误“java.lang.RuntimeException:Stub!”
- 23. robolectric的Android gradle测试
- 24. Android。 Robolectric。测试AccountManager结果
- 25. Robolectric(android):测试事件?
- 26. Robolectric测试未运行(Android)
- 27. Android/Ant的自动单元测试
- 28. Android单元测试
- 29. Android单元测试
- 30. 如何测试的Android CursorLoader与robolectric
这个问题很旧。正如我现在阅读[文档](https://developer.android.com/training/testing/index.html),似乎Android测试框架是要走的路。这些不是命令行,但对于刚开始的人来说,[这里是一些例子](http://stackoverflow.com/a/43626962/3681880)。 – Suragch 2017-04-26 07:27:12