Robolectric 是 Android 的業界標準單元測試框架。借助 Robolectric,您的測試可以在 JVM 內的模擬 Android 環境中運行,而無需模擬器的開銷和不穩定。 Robolectric 測試的運行速度通常比冷啟動模擬器上的測試快 10 倍。
Robolectric 支援運行15 個不同版本的 Android 單元測試,範圍從 Lollipop(API 等級 21)到 V(API 等級 35)。
以下是使用 Robolectric 編寫的簡單測試範例:
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
有關如何在專案中安裝和使用 Robolectric、擴展其功能以及加入貢獻者社群的更多信息,請訪問 robolectric.org。
如果您想使用 Robolectric 測試開始一個新項目,您可以參考deckard
(適用於 Maven 或 Gradle)作為在您的電腦上設定 Android 和 Robolectric 的指南。
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric 是使用 Gradle 建構的。 Android Studio 和 IntelliJ 都可以匯入頂級build.gradle.kts
文件,並自動從中產生專案文件。
要在您的電腦上啟動並執行 Robolectric,請查看本指南。
要獲得 Robolectric 架構的高級概述,請造訪 robolectric.org。
Robolectric 在多個地點積極開發。主要位置是這個 GitHub 儲存庫,它被認為是 Robolectric 程式碼的真實來源。這是更廣泛的 Android 開發者社群做出貢獻的地方。 Google 內部還有一個活躍的 Robolectric 開發樹,其中有來自第一方 Android 開發人員的貢獻。透過在 Google 內部擁有 Robolectric 的開發樹,它使第一方 Android 開發人員能夠更有效地為 Robolectric 做出貢獻。每次使用Copybara
程式碼同步工具發生變更時,該樹會直接同步到google
分支。此分支和master
分支的雙向合併定期發生。
Robolectric 也可以透過 external/robolectric repo 專案在 Android 平台上使用。對此原始碼樹的貢獻通常與新的 SDK 支援和不斷發展的平台 API 相關。此分支的變更會上游到 Google 的內部 Robolectric 樹,最終傳播到 GitHub 分支。
雖然很複雜,但這種分散式開發模型使不同環境中的 Android 開發人員能夠使用 Robolectric 並為 Robolectric 做出貢獻,同時允許更改最終進入 Robolectric 公開版本。
如果您想生活在最前沿,您可以嘗試針對快照建置運行。請記住,快照代表master
上的最新更改,並且可能包含錯誤。
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}