我已經閱讀了一些關於Android單元測試的文章,包括官方文檔,並寫了一些演示,它很複雜和緩慢,因爲它必須在設備或模擬器上運行。我應該繼續使用它還是找到另一種選擇?我應該使用Android Instrumentation來編寫單元測試嗎?
回答
通常應在目標設備上運行良好的測試。這就是爲什麼我的答案是:是的,你應該繼續使用它。如果你在模擬器或類似的東西上測試,可能會有一些小的差異,會導致與真實設備不同的行爲(特別是如果你使用某些硬件組件)。 如果您使用真實設備,測試運行速度快於仿真器的副作用。
我的替代看起來是這樣的:
我已經重構我的Android應用到
- 應用程序(使用庫GUI),
- Android的獨立的-LIB(服務接口,dto- s,沒有數據庫綁定的businesslogic)
- android-dependent-lib(android特有的服務接口和數據庫綁定實現)
爲android-independant-lib我已經創建了「正常」junit測試
爲Android特定的部分我目前沒有自動測試。
您正在尋找Robolectric。
Robolectric是一個單元測試框架,它可以消除Android SDK jar,因此您可以測試驅動Android應用程序的開發。測試在幾秒鐘內在工作站上的JVM內部運行。
尚未完成(例如支持庫操作欄不受支持),但它會爲您節省大量時間。除此之外,你可以通過自己開發shadows
來添加缺少的內容。
該項目託管在https://github.com/robolectric/robolectric,而不是您指出的地方。棄用的是由Robolectric的作者之一寫的一些Gradle插件,但不是Robolectric本身。 – 2014-10-28 05:03:51
感謝您的更正。我刪除了關於[depricated roboelectric-gradle-plugin]的原始錯誤評論(https://github.com/JakeWharton/gradle-android-test-plugin)。是否有任何非缺陷的機電插件? – k3b 2014-10-28 07:34:44
在maven上,沒有Robolectric插件這樣的東西。 Robolectric是一個用於編寫JUnit測試的庫,由諸如surefire等插件執行。我想它在Gradle上是相似的。 – 2014-10-28 08:51:19
- 1. Android - 使用Instrumentation框架進行單元測試
- 2. 我應該寫集成測試還是單元測試?
- 3. 我應該在android開發中做單元測試嗎?
- 4. 我應該在單元測試中使用AutoMapper嗎?
- 5. 單元測試時我應該使用模擬對象嗎?
- 6. 我應該在vs2008中使用內置的utils來進行單元測試嗎?
- 7. 我應該在編譯之前編寫測試嗎?
- 8. 單元測試應該知道NHibernate嗎?
- 9. MSTest:使用TestContext編寫單元測試
- 10. 單元測試php應用程序(我應該壓力測試?)
- 11. 我應該單元測試我的網格渲染邏輯嗎?
- 12. 我應該爲參數異常編寫測試嗎?
- 13. 如何編寫測試:Socket.io應用程序單元測試
- 14. 單元測試應該使用日誌記錄嗎?
- 15. 初學者程序員應該使用單元測試嗎?
- 16. 如何編寫php單元測試來測試堆棧功能?
- 17. 單元測試應該覆蓋壓力測試嗎?
- 18. 我應該使用mocks來測試方法實現嗎
- 19. 我應該使用def或test關鍵字編寫rails測試嗎?
- 20. 我應該使用Android菜單嗎?
- 21. 我應該單元測試DefaultModelBinder返回的模型嗎?
- 22. 我們應該單元測試控制檯輸出嗎?
- 23. 我們應該單元測試網絡服務嗎?
- 24. 我們應該單元測試日誌記錄嗎?
- 25. 我應該更改單元測試的命名約定嗎?
- 26. 我應該訪問單元測試的受保護方法嗎?
- 27. 我應該單元測試一種主要方法嗎?
- 28. 我應該單元測試XML模式嗎?
- 29. 我應該單元測試驗證碼嗎?這看起來不切實際
- 30. 用.NET編寫的單元測試COM
看起來很有趣,但有時我們應該測試組件的UI或生命週期。 – handrenliang 2014-10-22 09:18:26