Android 开发 谷歌UI测试框架(Espresso)
官网:https://developer.android.com/training/testing/espresso/index.html
核心 API 小巧、可预测、易于学习并且依然保持对定制的开放。Espresso 测试清晰的描述异常、交互和断言,而没有样板内容、自定义基础设施或凌乱的实现细节的干扰。
Espresso 测试运行非常快!它会在应用 UI 处于静止时对其进行操作和断言,而使你远离了等待、同步、睡眠以及后台轮)。
配置测试环境
在应用的 build.gradle 文件添加
dependencies中
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
设置 instrumentation runner 在 android.defaultConfig 下添加
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Android Studio 3.0.1中默认是配置好的 不需要自己添加
我们先来创建第一个测试,让项目先跑起来
EspressoTest1Activity.java
public class EspressoTest1Activity extends BaseActivity {
@BindView(R.id.espress_test1_tv)
TextView espressTest1Tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_espresso_test1);
ButterKnife.bind(this);
showBack();
}
}
开始学习各类UI的测试
先来看看提供了哪些方法
https://google.github.io/android-testing-support-library/downloads/espresso-cheat-sheet-2.1.0.pdf
基础
Espresso 组件介绍
Espresso : 与识图交互的切入点,参考
onView
和onData
. 也暴露了与任何视图都没有必要联系的API (比如pressBack
)ViewMatchers : 实现了
Matcher<? super View>
接口的对象集合,你可以在onView
方法中传入一个或者多个此类对象来在当前的视图结构中定位一个视图;ViewActions : 可以作为参数出入
ViewInteraction.perform()
方法中的ViewAction
的集合(比如click()
).ViewAssertions : 可以作为参数传入
ViewInteraction.check()
方法中的
ViewAssertion
的集合,通常,你会使用带有视图匹配器的匹配断言来判断当前被选中视图的状态;
简单的说
- ViewMachers:寻找用来测试的View。
- ViewActions:发送交互事件。
- ViewAssertions:检验测试结果。