android espresso跨程序,Android中使用Espresso进行UI测试
在使用Android Studio创建项目时,Android Studio一般都会自动创建测试相关的包名和类,可见测试在Android Studio开发中具有很重要的地位了,但我却从来没有使用过。
今天抽空看了一下Android中现在使用的测试框架Testing Support Library,
其中的Espresso的API是非常友好,且易于使用的。
为了练习使用Espresso进行UI测试,我实现了一个简单的登录界面作为被测试功能。
实现登录功能
创建一个LoginActivity, 输入用户名和密码,然后点击登录按钮跳转
到MainActivity,在MainActivity中显示“登录成功”或“登录失败”。
LoginActivity
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btnLogin:
Intent intent = new Intent(this,MainActivity.class);
intent.putExtra("name",edtName.getText().toString().trim());
intent.putExtra("pwd",edtPwd.getText().toString().trim());
startActivity(intent);
break;
}
}
MainActivity
public static final String NAME = "android";
public static final String PWD = "123456";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvLoginResult = (TextView) findViewById(R.id.tvLoginResult);
String name = getIntent().getStringExtra("name");
String pwd = getIntent().getStringExtra("pwd");
if (NAME.equals(name) && PWD.equals(pwd)) {
tvLoginResult.setText("登录成功");
} else {
tvLoginResult.setText("登录失败");
}
}
配置Espresso
打开APP Module中得build.gradle文件,在dependencies中加入:
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
在android.defaultConfig中加入:
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
添加测试类
在测试的package中创建LoginTest测试类, 我分别使用了正确和错误的密码进行测试,检查结果是否与预期的一致。
我的结果在另一个Activity中,Espresso可以直接跨Activity检查,不需要知道跳转关系。
@RunWith(AndroidJUnit4.class)
@LargeTest
public class LoginTest {
@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule<>(
LoginActivity.class);
@Test
public void loginWithWrongPassword(){
onView(withId(R.id.edtName)).perform(typeText("android"), closeSoftKeyboard());
onView(withId(R.id.edtPwd)).perform(typeText("wrong"),closeSoftKeyboard());
onView(withId(R.id.btnLogin)).perform(click());
onView(withId(R.id.tvLoginResult)).check(matches(withText("登录失败")));
}
@Test
public void loginWithRightPassword(){
onView(withId(R.id.edtName)).perform(typeText("android"), closeSoftKeyboard());
onView(withId(R.id.edtPwd)).perform(typeText("123456"),closeSoftKeyboard());
onView(withId(R.id.btnLogin)).perform(click());
onView(withId(R.id.tvLoginResult)).check(matches(withText("登录成功")));
}
目前只是初步使用Espresso,以后还需要在实际项目中逐渐加入Espresso测试,在实战中把它用起来。
参考
android espresso跨程序,Android中使用Espresso进行UI测试相关推荐
- android espresso跨程序,Android Espresso:依次运行多个测试
我正在尝试使用Espresso for Android进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试. 如何用Espresso来实现? 错误报告中提供的修 ...
- Android Studio中进行单元测试和UI测试
目录 在Android Studio中进行单元测试和UI测试 - 1.概述 在Android Studio中进行单元测试和UI测试 - 2.创建新的Android Studio工程 在Android ...
- android espresso跨程序,在Espresso Android中正确使用IdlingResource的方法
我正在用Espresso编写UI测试.应用程序与服务器紧密配合,因此在许多情况下,我需要等待任意一个值进行计算,或者获取和显示数据.Espresso建议使用IdlingResource. 我的Idli ...
- android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
本文首发于微信公众号「后厂技术官」 在上一篇文章Android IPC机制(二)用Messenger进行进程间通信中我们介绍了使用Messenger来进行进程间通信的方法,但是我们能发现Messeng ...
- nova launcher_如何使用Nova Launcher从Android的应用程序抽屉中隐藏应用程序
nova launcher Not every app deserves a spot in your app drawer. Maybe there are some built-in apps y ...
- android 进程 应用程序,Android中的每个活动都是一个进程,或者一个应用程序是一个进程...
All activities inside an application run in one process? 这取决于应用程序清单中android:process属性的值. 如果没有为清单中的应用 ...
- android系统应用程序,Android系统应用程序基本概念解读
经常关注我们51CTO的朋友们应该知道,在以前的文章中我们对Android这一手机系统有一个详细的跟踪介绍,方便大家学习应用这一新的功能强大的开源手机系统,比如对Android源码的编译的解析的解析等 ...
- android小闹钟程序,Android实现闹钟小程序.pdf
Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...
- android 基础应用程序,android应用程序基本实现(基础篇).ppt
<android应用程序基本实现(基础篇).ppt>由会员分享,可在线阅读,更多相关<android应用程序基本实现(基础篇).ppt(22页珍藏版)>请在人人文库网上搜索. ...
最新文章
- sklearn随机森林分类类RandomForestClassifier
- php邮件加密,怎样对邮件正文分段加密及解密解决思路
- Webstorm中提示Can't use Subversion command line
- php sockent通信
- docker 必然用到的一些指令
- mysql的查询语句怎么优化_MySQL查询语句如何优化
- case zhen语句_switch case语句,switch case用法详解
- word的公式后加编码后自动变小
- 【12-05】面试题
- 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法
- linux系统数据文件和信息--unix环境高级编程读书笔记
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_22-页面查询服务端开发-Dao-基础方法测试...
- adobe软件卸载不了怎么办?那就使用dobe官方清理工具吧!
- 2019竞赛公开题库c语言,干货!全国电子设计大赛你必知的C语言知识
- 现在移动端还用rem吗?nonono
- *****DOS·FOR·语句·学习·指南*****
- 启明星辰潘柱廷:信息安全市场的战国春秋与陆地海洋观
- 手游传奇刷元宝_传奇手游如何刷元宝
- 矩型窗、哈明窗、汉宁窗、莱克曼窗等一系列函数
- Terracotta Server集群
热门文章
- jdk1.8新特性:stream流 报错:stream has already been operated upon or closed
- DSPE-PEG-TH(AGYLLGHINLHHLAHL(Aib)HHIL) 磷脂(二硬脂酰基磷脂酰乙醇胺)-聚乙二醇-TH(AGYLLGHINLHHLAHL(Aib)HHIL)
- 迅雷极速版 win10 奔溃、闪退,官方补丁无法安装解决办法
- 用linux云服务器搭建自己的网站
- 6s测试信号软件,手机信号强度测试:苹果iPhone 6s不敌三星S6
- FX3学习笔记2-cs-make[1]: [post-build] Error 2 (ignored)
- Python工具函数
- 用html和css制作日历,CSS3制作日历
- PyCharm创建app的两种方式
- MapReduce各个执行阶段