espresso框架
一、espresso简介
espresso是google官方推出的ui自动化框架,可以用来做单元测试和自动化测试。
- 官方说明文档:https://developer.android.com/training/testing/espresso/
- 官方中文文档:https://lovexiaov.gitbooks.io/official-espresso-doc/content/
优点:
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
- perform()官方文档:https://developer.android.google.cn/reference/android/support/test/espresso/action/ViewActions
- ViewAssertions文档:https://developer.android.google.cn/reference/android/support/test/espresso/assertion/ViewAssertions
三、demo演示
1、创建工程
打开androidstudio,选择File->New->New Project,进入一下界面
Application name中的是工程名,company domain是package name,可以根据需要修改,也可以使用默认值;修改完之后点击next进入下一项;一路next,直到进入如下界面,Activity Name里面的内容默认是MainActivity,可以根据需要修改,也可以不修改,最后点击finish,这样就创建好了一个最简单的android工程。
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"
如下图所示:
build_gradle文件被修改之后,需要点击右上角的sync Now,否则修改无法生效
3、写测试用例
在app/src/下有三个文件夹,main,androidTest和test,main中用来编写工程源码,androidTest和test用来存放测试代码,espresso的代码放在androidTest目录下,命名规则:在被测试文件类名后+Test,EspressoActivity的测试用例文件就是EspressoActivityTest
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,如下图所示
测试用例执行结束后,会把测试结果展示出来,如下图所示:
在测试结果中可以看到测试用例总个数,失败用例和成功用例的情况。
点开失败用例的函数,可以查看失败原因,下图的失败原因是因为所选view的text实际为”sucess“,但是断言中的位”123“

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 多线程编程
Android 多线程编程文章目录线程的调用实现Runnable接口定义一个线程使用匿名内部类的方法启动子线程在子线程中更新主线程参数异步信息处理机制使用异步信息处理机制解析异步信息处理机制AsyncTask使用AsyncTask线程的调用实现Runnable接口定义一个线程class MyThread implements Runnable{ @Override public void run() { //处理具体的逻辑 } } 启动MyThread MyThread myThread = new MyThread();new Thread(myThread).start();12使用匿名内部类的方法启动子线程new Thread( new Runnable() { @Override public void run() { //处理具体的逻辑 } } ).start(); 在子线程中更新主线程参数子线程不能直接修改主线程中的变量,否者会出现异常。 异步信息处理机制使用异步信息处理机制首先定义一个整形常量UPDATE_DATA。 public static final int UPD...
- 下一篇
【Android电量】Battery Historian耗电分析
两种版本分析模式: Historian V2 模式分析 1、纵坐标: 重要参数:wake_lock、plugged、battery_level、screen 具体说明: 1.1.battery_level:电量,可以看出电量的变化。 比如图中的数据显示出当前的电量为17%。 1.2.plugged:充电状态,这一栏显示是否进行充电,以及充电的时间范围。 大图中反应了在某一时间插入了数据线,然后一直持续到数据采集结束。 1.3.screen:屏幕是否点亮。 这一点,可以用于考虑睡眠状态和点亮状态下电量的使用信息。 1.4.top app:该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app。 用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。 1.5.Userspace wakelock:在Android的运行机制里,当手机空闲时会进入到休眠状态。而wakeloack的作用就是禁止系统进入休眠,硬件保持高能耗运行从而可以实现关屏唤醒等毒瘤操作。 wake_lock...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群