使用Espresso测试记录
准备工作
- 建立测试项目
- 添加测试依赖
- 编写Espresso测试
- 运行测试并检查测试结果
建立测试项目
使用Android Studio建立测试项目,Activity模版使用 LoginActivity,AS会自动生成一个LoginActivity。
添加Espresso依赖
androidTestCompile 'com.android.support:support-annotations:23.0.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
指定TestRunner
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
编写测试
这里测试上面的自动建立的LoginActivity。在src/androidTest/com/lw/espresso/ui目录下建立TestLoginActivity。
@RunWith(AndroidJUnit4.class)
@MediumTest()
public class TestLoginActivity {
@Rule
public ActivityTestRule<LoginActivity> rule = new ActivityTestRule<>(LoginActivity.class);
@Test
public void testLogin(){
String userName = "123@123.com";
String pwd = "123456";
/*
1. 首先找到输入Email的EditText
2. 输入userName
3. 检查不为空
*/
ViewInteraction emailView = Espresso.onView(ViewMatchers.withId(R.id.email))
.perform(ViewActions.typeText(userName))
.perform(ViewActions.closeSoftKeyboard())
.check(ViewAssertions.matches(ViewMatchers.withText(Matchers.not(Matchers.isEmptyOrNullString()))));
ViewInteraction pwdView = Espresso.onView(ViewMatchers.withId(R.id.password))
.perform(ViewActions.typeText(pwd))
.perform(ViewActions.closeSoftKeyboard())
.check(ViewAssertions.matches(ViewMatchers.withText(Matchers.not(Matchers.isEmptyOrNullString()))));
Espresso.onView(ViewMatchers.withId(R.id.email_sign_in_button))
.check(ViewAssertions.matches(ViewMatchers.isEnabled()))
.check(ViewAssertions.matches(ViewMatchers.isClickable()))
.perform(ViewActions.click());
}
}
用到的类:
ViewInteration: 用来模拟View的类,可以在执行ViewAction和检查ViewViewAction: 代表click、typeText等事件ViewMatcher: 用于匹配View和验证ViewViewAssertion: 验证View正确性
ViewActions、ViewMatchers、ViewAssertions都是对上面类的一些封闭里面包含了很多静态方法。
运行测试
运行前要关闭所有动画可以在开发者选项中关闭,然后Run testLogin。测试的Activity尽量不要Activity里面运行finish方法,如果你的Activity已经关闭了但你的测试还在跑的话测试会失败。还有不知道算不算个Bug如果你的EditText的error是个空的话,当你调用ViewMatchers.hasErrorText的时候会报空指针异常。
使用Espresso测试记录的更多相关文章
- linux .net mono方案测试记录与报告(一)
第一阶段 linux .net 方案测试 硬件为4核8线程的笔记本i7-4710mq 分配了4个线程 情况下 1.方案一 nginx+fastcgi-mono-server4方式 性能为每秒处理140 ...
- Yii 增删改查 测试记录
亲们, 我是yii小白 不要笑话我奥.今天白天写一个管理模块涉及到 yii ar 下的 curd 操作,做 update 操作时纠结了好久,今天晚上花点时间学习, 下面写下我的测试记录 代码如下: ...
- Office隐藏17年的漏洞CVE_2017_11882测试记录
Office隐藏17年的漏洞CVE_2017_11882测试记录 创建时间: 2017/11/25 0:18 作者: CN_Simo 标签: Office漏洞 参考文章1:https://www.cn ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.4——使用Espresso测试Activity
问题: 你想要使用Google的Espresso测试Activity. 解决方案: 在Gradle配置里面增加Espresso,书写测试脚本. 讨论: Espresso测试库已经被添加进“Androi ...
- HDFS部署测试记录(2019/05)
目录 HDFS部署测试记录 0.HDFS基础知识 1.基本组成结构与文件访问过程 2.NameNode启动时如何维护元数据 3.HDFS文件上传流程 1.系统环境 1.安装大致记录: 2.磁盘分区 3 ...
- [转]Rapid Reporter——轻量级ET测试记录工具
下载地址:http://testing.gershon.info/reporter/ 特别感谢:邰晓梅老师 在一次ET的在线培训课程,邰晓梅老师使用的是这个工具. Rapid Reproter,是一款 ...
- linux下开发板网络速度测试记录
由于做的项目对于网络和USB的读写速度有很高的要求,因此新拿回来的板子要测试网络和usb的最佳传输速度.要考虑不少因素,先把我能想到的记录下来. 测试的环境是开发板和ubuntu虚拟机 ...
- 堡垒机jumpserver测试记录--使用
快速入门 截图就不放了,官网都有,这里只是就遇到的一些问题做下记录 必备条件 一台安装好 Jumpserver 系统的可用主机(堡垒机) 一台或多台可用的 Linux.Windows资产设备(被管理的 ...
- 堡垒机jumpserver测试记录--安装
一步一步安装(CentOS) 基本都是官网的东西,只是有些坑做了记录. http://docs.jumpserver.org/zh/docs/step_by_step.html 环境 系统: Cent ...
随机推荐
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...
- Java 复制PPT幻灯片
本篇文章将介绍通过java程序原样复制PPT幻灯片的方法.这里分两种情况来复制,即 在同一幻灯片文档中复制 在不同幻灯片文档间复制 使用工具:Free Spire.Presentation for J ...
- POJ 3786 dp-递推 Adjacent Bit Counts *
Adjacent Bit Counts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 599 Accepted: 502 ...
- CCPC-Wannafly Summer Camp #1(部分解题报告)
A:Birthday 时间限制: 1 Sec 内存限制: 256 MB 题目描述 恬恬的生日临近了.宇扬给她准备了一个大蛋糕. 正如往常一样,宇扬在蛋糕上插了n支蜡烛,并把蛋糕分为m个区域.因为某种 ...
- C++ STL vector的学习
vector就是一个不定长数组,vector是动态数组,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素,使用vector之前,必须包含相应的头文件和命名空间. #include <vec ...
- avalon.js与 ajax使用的一个错误实例
http://www.cnblogs.com/smallstudent/diary/2016/04/06/5360605.html
- ReentrantReadWriteLock总结
ReentrantReadWriteLock的流程的一些特性: // ReentrantReadWriteLock.WriteLock.lock()特性: • 已持有读锁的线程不能再持有写锁: • 已 ...
- C# 表达式树讲解(一)
一.前言 一直想写一篇Dpper的定制化扩展的文章,但是里面会设计到对Lambda表达式的解析,而解析Lambda表达式,就必须要知道表达式树的相关知识点.我希望能通过对各个模块的知识点或者运用能够多 ...
- php文件加密解密
利用base64加解密 base64_encode是加密,而base64_decode是解密 语法:string base64_encode(string data); 语法:string bas ...
- ListView 字母导航排序
一.概述 ListView字母导航排序,网上已经有很多代码和博客了, 这篇博文也是照搬网上的. 之所以写到这里,不是为了说明什么,只是为了以后自己查阅方便.本来公司要求实现expandablelis ...