深入浅出Android单元测试(五)Espresso进行UI测试

2018-11-23  本文已影响31人  程序引力
安卓机器人

需要对Android界面UI进行测试?本文对以最易懂的方式介绍Espresso框架。

若有错漏,烦请斧正。转载请注明出处。欢迎关注程序引力

Espresso核心概念

在Espresso中,主要有两个对象,分别是:

为了构造这两种对象,Espresso提供了两种方法,分别是:

onView(withId(R.id.editTextView))
onData(is(instanceof(DataBean.class))

通过上面的方法就可以获得相应的Interaction对象,得到这个对象后才可以进行后面的测试。

这两个对象均有两个方法,分别是:

Espresso核心流程

对View进行UI测试的核心流程

onView() -> perform() -> check()

即创建ViewInteration对象,执行UI动作,最后校验动作结果是否符合预期
写成链式调用的形式,就是:

onView().perform().check()

对Data进行UI测试的核心流程

onData() -> DataOptions -> perform() -> check()

即创建DataInteration对象,之后执行一些数据处理,然后执行UI动作,最后校验动作结果是否符合预期
写成链式调用的形式,就是:

onView().someMethod().perform().check()

Espresso简单示例

View示例

onView(withId(R.id.my_view))            // withId(R.id.my_view)是一个匹配器Matcher
        .perform(click())               // click()是一个动作ViewAction
        .check(matches(isDisplayed())); // matches(isDisplayed())是一个校验器

从上面的简单实例中,可以看出也是链式调用,该调用分为三步:

实践

引入依赖

在模块(如app)的build.gradle中添加

dependencies {
    // Espresso 核心包
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    // Espresso 同时依赖JUnit与AndroinUnitRunner
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
}

为了保证UI测试结果可靠,Android建议在开发者模式中将设备的动画都关闭,包括窗口动画缩放、过度动画缩放与动画程序时长调整。

附录

Espresso相关包:

上一篇 下一篇

猜你喜欢

热点阅读