Android UI 测试框架,在真机运行,相比手动测试,相当于把流程自动化了,并且自动监测结果。 这篇文章主要是阅读官方文档的结果,这渣英文,不敢说翻译。若有理解错误,望指正。...不比单元测试,依然要编译运行到真机上,没敢用公司项目测,只是建了个最简单的 Demo,就感觉好慢,测试一次好慢。...要是真的去写这测试,还得写许多代码,考虑许多过程,然后再编译,我怎么觉得,还不如 Instant Run 加自己手动操作测试来得快呢。...:espresso-core:3.0.2' } 基本使用 在 src/androidTest 创建文件。...espresso-cheatsheet.png
如果依赖Android环境,但是没有UI相关或者UI比较简单(如点击按钮)的单元测试可以使用开源库Robolectric解决依赖问题,使测试运行在JVM上,而非模拟器上,大大提高测试运行效率。...工程中使用Espresso实现自动化测试只需要三步: 1、添加依赖: androidTestCompile 'com.android.support.test.espresso:espresso-core...1、将UI控件放入Activity(xml中配置); 2、添加一个输入框(也可用Spinner)和按钮用来提交命令,不同的命令控制UI控件调用不同的函数,Activity制作完成; 3、使用Espresso...以上,UI控件执行了初始化代码及各函数代码,达到单元测试的目的。 那么问题来了,为何不用Espresso直接获取UI控件对象进行函数调用呢?...用例设计为控件显示星期与隐藏星期,即hideWeekDay(true)与hideWeekDay(false),如隐藏星期的显示,则步骤为: (1)命令输入框输入hideWeek(已在Activity中做好解析); (2)点击提交按钮
52933593 buid.gradle testCompile ‘junit:junit:4.12’ androidTestCompile ‘com.android.support.test.espresso...:espresso-core:2.2.+’ androidTestCompile ‘com.android.support.test:runner:0.4.+’ androidTestCompile...新建测试类 下面是模拟登录的代码 @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule // 注解定义规则 public...ActivityTestRule mActivityRule = new ActivityTestRule( MainActivity.class); @Test // 测试用例...onView(withId(R.id.editTextPassWord)).perform(typeText("wjf"),closeSoftKeyboard()); // 触发登录按钮的点击事件
大家都知道,测试Android系统原生态APP目前最好的工具使UiAutomation,随着DevOps的普及,我们需要尽早地发现程序中的缺陷,所以单元测试变得非常重要,Android系统推出了Espresso...Espresso与UiAutomation最显著区别在于UiAutomation可以测试一个APP多个界面(Active),而Espresso只能测试一个APP一个界面(Active),另外UiAutomation...可以独立测试APP建立专门的Project,Espresso必须建立在待测APP同一个目录下。...同步完成,我们在待测试代码的androidTest建立测试代码,下面是这段Espresso代码。...同样假设是一个Listview,我们需要点击Listview中第二个item的按钮,那么我们需要这样写。
两个按钮:分别为“Cancel”按钮和“Next”按钮。 应用Logo:显示Shrine的徽标图片。...androidTestImplementation 'androidx.test:runner:1.2.0-alpha05' androidTestImplementation 'androidx.test.espresso...:espresso-core:3.2.0-alpha05' } 2.2运行Gradle 依赖项添加完成后,运行Gradle任务下载所有依赖包,工作做好准备,接下来开始开发 2.3 添加XML布局文件 在...> 2.5 添加按钮XML 在XML布局文件中,添加“Cancel”和“Next”按钮,操作登录功能: <RelativeLayout android:layout_width="match_parent...添加“Next”按钮的点击监听器,根据isPasswordValid() 方法实现密码验证。 当验证通过时,清除错误信息和导航到下一个Fragment。
Google使用Espresso测试了他们自己的超过30个应用程序,包括G+、Maps和Drive。...Espresso测试是非常容易实现的,由三步构成: ViewMachers:寻找用来测试的View。 ViewActions:发送交互事件。...接下来一起写一demo测试,深入了解Espresso。 准备 支持Espresso: dependencies { ......以下示例我们点击登录按钮时,首先对输入的用户名和密码进行验证,验证不通过在TextView上显示对应原因,验证没有问题显示“登录成功”。...,使用Espresso进行模拟各种情况输入和点击,测试是否符合我们的预期: 对Espresso的介绍大概就是这些了,希望大家多提建议,一起进步。
布局还包括一个触发登录序列的按钮。背景颜色是漂亮,平坦,浅灰色。...可以看到并不是非常美观,下载我们引入 TextInputLayout 稍作改动 ---- 使用 TextInputLayout 我们终于到达了本教程中最有趣的部分。...一个 TextInputLayout 小部件的行为与LinearLayout它完全一样,它只是一个包装器。TextInputLayout只接受一个子元素,类似于a ScrollView。...---- 实施onClick方法 首先必须处理按钮单击。有很多方法可以处理按钮点击。...您应该结合这两种方法进行一些测试,以便您实际看到 我在说什么。
我们来分析一下效果图中都用到了什么,只看带颜色的有文字,和一个苹果背景图、还有一个悬浮按钮(吸附在CollapsingToolbarLayout的右下角)。...对于这个悬浮按钮里面也有很多属性,这里就不在一一写出了,这里只是作为一个辅助,让我们在视觉更舒服所加的。 2:在标题 上栏加入布局,放一些搜索框 ?...2.1:布局书写 这里的布局和上面是一样的,只是把imageview换成了LinearLayout布局,在该布局中写上我们熟悉的输入框和图片按钮即可, 最外层-->里层还是:CoordinatorLayout...这时候TextInputLayout则是显示错误,TextInputLayout是LinearLayout的子类,用于辅助显示提示信息。...现在仅仅是过度效果,还没有加提示信息,用法很简单,但注意一点TextInputLayout只能包含一个TextInputEditText,如果写用户名和密码那就写两个TextInputLayout,哦,
---- Implementing TextInputLayout Import the Support Libraries 要使用TextInputLayout控件,你需要导入两个Library。...布局中还包含了一个触发登陆流程的按钮。背景颜色是扁平风格的灰色。 另一个重要的细节是记得正确设置EditText的inputType属性。...TextInputLayout控件和LinearLayout完全一样,它只是一个容器。...有了TextInputLayout,这将不再是问题。...Implementing the onClick Method 首先你需要处理按钮的点击。有许多方法处理按钮的点击。
随着汽车智能化的发展,触摸屏正在缓慢但肯定地取代物理按钮作为与汽车交互的标准方法,但它们是否比基于按钮的同类产品更容易或更安全? 近日,瑞典汽车杂志《Vi Bilägare》对十几辆车进行了测试。...其中,11 款配备触摸屏,只有一款——17年前的沃尔沃 V70——依赖于过去的物理按钮。 该杂志测量了驾驶员在封闭路线上以 68 英里/小时的速度行驶时执行一系列基本任务所需的时间。...值得注意的是,在测试开始之前,驾驶员有时间了解每辆车及其各自的信息娱乐系统。...基于按钮的沃尔沃 V70 在测试中表现最好,驾驶员只需 10 秒即可完成所有测试。以 68 英里/小时的速度行驶,当驾驶员进行调整时,车辆仅行驶了 1004 英尺(约306米)。...您是否更喜欢带有触摸屏的现代车辆所提供的时尚美感,或者您是一个喜欢久经考验的真正按钮的纯粹主义者? 编辑:芯智讯-林子
github地址:https://github.com/shuaijia/MaterialDesignProject 添加依赖 TextInputLayout是在Material Design中的,如果我们要使用的话...,必须在gradle文件中配置 开始使用 TextInputLayout是一种新的继承自LinearLayout的布局,使用时其只能包含一个EditText或其子类控件(如AutoCompleteTextView...) 还可通过设置hint和error来显示浮动标签 注意:一个TextInputLayout中 有且只有 一个EditText!...举例 浮动标签 字数统计 错误提示 密码框右侧图标 虚拟键盘监听 有时候我们在用虚拟键盘的时候,在输入账号之后,我们点击下一项,焦点会跑到输入密码这一栏,当我们密码输入完成之后,点击确定按钮就能登录了
的按钮 String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!"...Show Passed按钮 显示所有方法的测试。...Espresso框架 基于Instrumentation的开源自动化测试框架,规模小、简洁,API精确,编写测试代码简单,容易快速上手。但不能跨app。...androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' } 创建Espresso测试的流程 定位控件,onView...androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2' } 需测试的WebView必须在指定activity时设置
为什么选择Espresso测试框架? 很简单,Espresso是Google针对Android平台开源的一款最新的Android自动化测试框架。...的EditText组件,并且调用typeText方法对其进行设置text内容为"Steve"; 再通过withId方法找到id为greet_button的Button组件,掉头click方法模拟点击该按钮...一些Espresso的主要方法 UI自动化具体实例 这里建议参照官方文档给出的步骤进行实践,示例给出自己在实践demo中配置自动化测试的基本步骤。...异步和延迟 有时点击一个按钮,ui操作后需要执行一个较为耗时的事情时通常会采用异步回调的方式通知显示结果,这时进行UI自动化测试的第三步验证结果的时机就不能才能同步的方式去执行,而是需要做异步回调通知执行或延迟执行...然后在测试用例的类中注册和反注册接口: Espresso.registerIdlingResources(idlingResource); ?
Google希望,当Android的开发者利用Espresso写完测试用例后,能一边看着测试用例自动执行,一边享受一杯香醇Espresso(浓咖啡)。...应该统一使用Espresso提供的方法 测试用例,特别是UI自动化测试用例,应该尽量保持逻辑简单,覆盖关键路径就足矣。因为UI变动是很频繁的,越复杂,维护成本就越高,投入产出比就会自然降低了。...RecyclerViewActions.actionOnItemAtPosition(27, click())); } 3.2 Idling Resource的使用 应用开发中很常见的一个场景是,点击某个按钮...原因是,Espresso的用例运行过程是只有当UI线程IDLE和UI队列没有需要执行的事件时,Espresso的测试代码才会被执行。使用方无需写Sleep逻辑等待UI绘制完成。...以下是Espresso测试用例执行简易的流程图,帮助理解: [image.jpg] 写在最后 引用官方介绍的一段话,Espresso的目标受众是开发者。
它包括现有的 Android JUnit 4 支持,Espresso 视图交互库和几个新的密钥测试 APIs。这些 APIs 可用于在真实和虚拟设备上进行仪器测试。...我们使用 Espresso 视图交互库将文本输入到两个文本字段中,然后点击 UI 中的按钮。...与 ActivityScenario 类似,Espresso 为你处理多线程和同步,并提供可读且流畅的 API 以创建测试。...:espresso-intents:3.1.0”) androidTestImplementation(“androidx.test.espresso:espresso-core:3.1.0”) androidTestImplementation...:espresso-intents:3.1.0”) testImplementation(“androidx.test.espresso:espresso-core:3.1.0”) testImplementation
它使用AppCompat主题,设计支持库中的小部件(包括具有自定义背景的按钮)以及需要迁移的各种其他元素。...在上面的示例中,按钮发生了变化、文本和图标的颜色发生了变化。FAB 现在变成了蓝绿色,并且文本字段看起来完全不同。不用担心。.../Widget.Design.TextInputLayout"> ...... +TextInputLayout” parent=”Widget.Design.TextInputLayout”> +...TextInputEditText Widget.Design.TextInputLayout Widget.MaterialComponents.TextInputLayout.* textInputStyle
passwordLayout.isErrorEnabled = false } } Log.d("mUserModel", "username: } } 首先,我们给登录按钮增加点击事件...layout_height="match_parent" android:orientation="vertical"> TextInputLayout...singleLine="true" android:text="@={userModel.username}" /> TextInputLayout...> TextInputLayout android:id="@+id/passwordLayout"...textPassword" android:text="@={userModel.password}" /> TextInputLayout
> TextInputLayout android:layout_width="match_parent...hint="密码" android:inputType="textPassword" /> com.google.android.material.textfield.TextInputLayout...下面进入MainActivity中,首先我们改变一下布局activity_main.xml在按钮的下面再加如下代码 <TextView android:id="@+id/tv_account...> TextInputLayout android:layout_width="match_parent...我将会输入study、666,然后点击登录按钮,也会将输入框的数据显示在TextView上,这样是否会省去很多不必要的繁琐工作呢?
Android Java 有 主线正在使用espresso进行UI测试和模块间的接口自动化测试 Instrumentation Robotium android Instrumentation...“登录/注册”和“进入首页”两个按钮; 点击“登录/注册”按钮,判断是否展示登录界面。...Then 展示“登录/注册”和“进入首页”两个按钮 When 点击“登录/注册”按钮 Then 展示登录界面 @guide_02 Scenario: 点击最后一张引导页“进入首页...”按钮,判断引导页是否还存在 When 滑动到最后一张引导页,点击“进入首页”按钮 Then 退出引导页 Feature:就是字面意思,主要是描述功能特性。...Step:实现场景的步骤代码 Espresso https://developer.android.com/training/testing/espresso/ Espresso是Google的开源自动化测试框架
领取专属 10元无门槛券
手把手带您无忧上云