Android 单元测试——Espresso 概述篇
2018-01-22 本文已影响12人
孤独狂饮
单元测试的好处
- 发送错误的时候,快速反馈
- 在早期开发中,预先发现问题
- 安全的重构代码,优化代码的时候不用担心回归
- 稳定的开发速度,不用担心技术债务
资源
帮你更好的写单元测试
- 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 测试速度是最快的,让你远离 UI 长时间的等待。
目标用户
Espresso 是针对开发人员的,他们认为自动化测试是开发流程中的一部分。当用于黑盒测试的时候,Espresso 可以最大化的解锁那些熟悉的代码。
同步能力
每次调用 onView() 的时候,Espresso 会等待相应的 UI 操作或者断言,直到他们满足以下功能:
- 消息队列为空
- 没有 异步任务
- 空载资源处于闲置状态
相关引用包
espresso-core:核心包包含 View 的匹配(matchers), 动作(actions), 和 断言(assertions)。
espresso-web:包含 WebView 的相关支持。
espresso-idling-resource:Espresso 与后台工作的同步操作。
espresso-contrib:扩展支持资源,例如时间选择器(DatePicker),高级的 ListView(RecyclerView),抽屉效果(Drawer),异步代码测试(CountingIdlingResource)的动作,容易检测。
espresso-intents:扩展和验证 Intent。