espresso框架-阿里云开发者社区

开发者社区> awesome@qa> 正文

espresso框架

简介: 一、espresso简介espresso是google官方推出的ui自动化框架,可以用来做单元测试和自动化测试。 官方说明文档:https://developer.android.com/training/testing/espresso/ 官方中文文档:https://lovexiaov.
+关注继续查看

一、espresso简介
espresso是google官方推出的ui自动化框架,可以用来做单元测试和自动化测试。

优点:

1、代码风格简洁,非常易学

2、api非常小

3、Espresso 的测试跑起来很快

4、官方的框架,android studio支持

5、适用于白盒&黑盒自动化

缺点:

1、不能跨app运行

2、定位TabLayout中的tab时,由于它们拥有相同的类型和id,难以定位view

3、不能进行改变屏幕方向的操作

二、espresso组成
Espresso 由 3 个主要的组件构成

**ViewMatchers:查找view,通过onView()在当前层级中定位出view
ViewActions:与view交互,通过perform()对view执行某种操作

ViewAssertions:为view设置断言,通过check()检查view的状态**

/ withId(R.id.my_view) is a ViewMatcher
// click() is a ViewAction
// matches(isDisplayed()) is a ViewAssertion
onView(withId(R.id.my_view))
    .perform(click())
    .check(matches(isDisplayed()));

onView()查找视图的几种用法如下:

onView(withClassName()) 根据视图的类名称查找

onView(withContentDescription()) 根据视图的内容描述查找

onView(withId()) 通过视图的ID查找

onView(withText()) 视图中显示的文本查找

onView官方文档:https://developer.android.google.cn/reference/android/support/test/espresso/matcher/ViewMatchers

perform()用法:

click():返回一个点击动作,Espresso利用这个方法执行一次点击操作,就和我们自己手动点击按钮一样。

clearText():返回一个清除指定view中的文本action,在测试EditText时用的比较多。

swipeLeft():返回一个从右往左滑动的action,这个在测试ViewPager时特别有用。

swipeRight():返回一个从左往右滑动的action,这个在测试ViewPager时特别有用。

swipeDown():返回一个从上往下滑动的action。

swipeUp():返回一个从下往上滑动的action。

closeSoftKeyboard():返回一个关闭输入键盘的action。

doubleClick():返回一个双击action

pressBack():返回一个点击手机上返回键的action。

longClick():返回一个长按action

三、demo演示
1、创建工程
打开androidstudio,选择File->New->New Project,进入一下界面
1

Application name中的是工程名,company domain是package name,可以根据需要修改,也可以使用默认值;修改完之后点击next进入下一项;一路next,直到进入如下界面,Activity Name里面的内容默认是MainActivity,可以根据需要修改,也可以不修改,最后点击finish,这样就创建好了一个最简单的android工程。
2

2、配置espresso环境
g在app/build_gradle文件的dependencies中添加

androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2';

在defaultConfig中添加

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

如下图所示:
3

build_gradle文件被修改之后,需要点击右上角的sync Now,否则修改无法生效
4

3、写测试用例
在app/src/下有三个文件夹,main,androidTest和test,main中用来编写工程源码,androidTest和test用来存放测试代码,espresso的代码放在androidTest目录下,命名规则:在被测试文件类名后+Test,EspressoActivity的测试用例文件就是EspressoActivityTest
5
6

public ActivityTestRule activityRule = new ActivityTestRule(EspressoActivity.class);指定要测试的activity

@Test后的是测试用例,上面的一共包含三个测试用例

onView(withId(R.id.test)).check(matches(isDisplayed()));表示查找R.id.test控件,然后查看改控件是否正在展示

onView(withId(R.id.test)).perform(click());查找R.id.test控件,然后执行点击操作
onView(withId(R.id.edit_text)).check(matches(withText("123")));查找R.id.test控件,然后查看text是否为“123”,如果控件中文案等于“123”,则这条用例测试通过,否则测试失败。

如何执行测试用例?选择测试文件,然后点击run,如下图所示
7

测试用例执行结束后,会把测试结果展示出来,如下图所示:

在测试结果中可以看到测试用例总个数,失败用例和成功用例的情况。

点开失败用例的函数,可以查看失败原因,下图的失败原因是因为所选view的text实际为”sucess“,但是断言中的位”123“
8

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
NodeJS之 Express框架 app.use(express.static)
一 、设置静态文件目录 语法如下: app.use(express.static(_dirname + '/public')); //设置静态文件目录 注: 将静态文件目录设置为项目根目录 + ‘/public’,可以这样写 app.use(express.static(path.join(_dirname, 'public'))); 运用path模版的join方法效果和前面是等价的。
1089 0
MapReduce框架Mapper和Reducer类源码分析
一:Mapper类 在Hadoop的mapper类中,有4个主要的函数,分别是:setup,cleanup,map,run。代码如下: protected void setup(Context context) throws IOException, InterruptedEx...
680 0
【剖析 | SOFARPC 框架】系列之SOFARPC跨语言支持剖析
Scalable Open Financial Architecture 是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
661 0
MapReduce框架排序和分组
前言:         Mapreduce框架就是map->reduce,其中Map中的是偏移量和行值,在其之前会使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordReder的实现。
577 0
Event Store框架探究
摘要:   游戏开发中,经常会越到千奇百怪的Bug。后台程序都是以demon 方式运行,要么GDB,要么Log。一些确定性的bug可以直接使用GDB调试,比如特定请求会Crash。如果是运行一段时间,Bug才会出现,无明显规律,那么也只能使用Log了。
612 0
蚂蚁金服开源自动化测试框架 SOFAACTS
Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
1065 0
Node.js Express 框架2
文件上传 以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data。 index.html 文件上传表单 文件上传: 选择一个文件上传:    server.
1098 0
蚂蚁金服通信框架SOFABolt解析 | 连接管理剖析
Scalable Open Financial Architecture是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
981 0
蚂蚁金服通信框架SOFABolt解析 | 编解码机制
Scalable Open Financial Architecture是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
595 0
+关注
awesome@qa
百度外卖用户端测试团队负责人,负责团队技术发展规划以及项目质量保障。负责设计并开发自动化测试框架与工具,帮助团队提升测试的质量和效率。深入理解持续集成体系建设,对质量体系有深刻的理解和积累。
99
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载