簡體   English   中英

在 Android 設備上運行 Robolectric 測試的最佳方法

[英]Best way to run Robolectric tests on Android device

我有一個 Robolectric 測試項目設置,但我還想在我的設備上運行這些測試,以檢查我沒有被 JVM 與 Dalvik 實現差異所困擾。

與 robolectric 測試不同,我不會經常運行這些測試。 我擔心的是維護測試套件並驗證實際設備功能的努力很少。

最好的方法是什么?


我目前擁有的:

我的 robolectric 測試項目作為測試用例 TestPackage。 我使用測試用例 TestRoboOnAndroid 創建了一個 Android 測試項目。 它創建一個 TestPackage 並為 TestPackage 中的每個測試提供一個測試。

現在,每次我向我的 robolectric 套件添加測試時,我都需要手動將它添加到我的設備套件中。 有沒有辦法通過反射自動做到這一點?

Also, Robolectric uses JUnit 4 (by default) and Android uses JUnit 3. So I have to write all of my Robolectric tests using JUnit 3 style (importing from junit.framework instead of org.junit ).

Robolectric 的重點不是在設備上運行它,設計就是基於此。 如果您想在設備上運行某些東西,請查看 SDK 或Robotium中的默認儀器測試。

在 JVM 上運行您的 Robolectric 測試是完全可行的,此外還可以創建依賴於設備特定交互的 Robotium 測試(例如創建屏幕截圖、硬件差異......)並在設備和模擬器上運行,所有這些都組合成一個構建。

最簡單的方法是使用Android Maven 插件

我使用分層系統,在可能的情況下我更喜歡較早的層:

  • 純單元測試 我嘗試使盡可能多的代碼完全獨立於 Android API,然后使用可以在任何 JVM 上運行的“純”單元測試。 這些測試是最快的,它有助於保持不需要特定於 Android 的可移植代碼。

  • Robolectric 支持的單元測試 我的代碼對 Android API 的依賴性很小,可以通過 Robolectric 陰影來滿足,我用 Robolectric 對其進行了測試。 與純測試相比,Robolectric 的設置時間要多一些,但它仍然比在模擬器上啟動/運行要快。

  • Android 框架測試 Robolectric 沒有削減它的地方 - 要么是因為陰影不存在,要么是因為我大量使用 Android API(因此想針對真實事物進行測試) - 我編寫了在模擬器/設備上運行的測試默認框架。

層級的重點是使事情盡可能簡單,這使整個套件更快,並有助於促進更清潔的代碼。

我們使用 Robolectric 對 JVM 進行單元測試,並使用 Calabash-Android 對 Dalvik 進行系統測試。 兩者都可以集成到我們的 Jenkins CI 構建中,並且在這兩個工具之間,我覺得我們涵蓋了所有基礎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM