單元測試的好處
- 發(fā)送錯誤的時候,快速反饋
- 在早期開發(fā)中,預(yù)先發(fā)現(xiàn)問題
- 安全的重構(gòu)代碼,優(yōu)化代碼的時候不用擔(dān)心回歸
- 穩(wěn)定的開發(fā)速度,不用擔(dān)心技術(shù)債務(wù)
資源
幫你更好的寫單元測試
- Espresso
- Robolectric
- AndroidJUnitRunner
- Android Studio
Espresso
用 Espresso 寫簡潔,漂亮,可靠的 Android UI 測試。
@Test
public void greeterSaysHello() {
onView(withId(R.id.name_field)).perform(typeText("Steve"));
onView(withId(R.id.greet_button)).perform(click());
onView(withText("Hello Steve!")).check(matches(isDisplayed()));
}
Espresso 測試速度是最快的,讓你遠(yuǎn)離 UI 長時間的等待。
目標(biāo)用戶
Espresso 是針對開發(fā)人員的,他們認(rèn)為自動化測試是開發(fā)流程中的一部分。當(dāng)用于黑盒測試的時候,Espresso 可以最大化的解鎖那些熟悉的代碼。
同步能力
每次調(diào)用 onView() 的時候,Espresso 會等待相應(yīng)的 UI 操作或者斷言,直到他們滿足以下功能:
- 消息隊列為空
- 沒有 異步任務(wù)
- 空載資源處于閑置狀態(tài)
相關(guān)引用包
espresso-core:核心包包含 View 的匹配(matchers), 動作(actions), 和 斷言(assertions)。
espresso-web:包含 WebView 的相關(guān)支持。
espresso-idling-resource:Espresso 與后臺工作的同步操作。
espresso-contrib:擴(kuò)展支持資源,例如時間選擇器(DatePicker),高級的 ListView(RecyclerView),抽屜效果(Drawer),異步代碼測試(CountingIdlingResource)的動作,容易檢測。
espresso-intents:擴(kuò)展和驗證 Intent。