想知道爲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