首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Espresso浅析和使用

”,用来运行脚本 增加packagingOptions,避免编译时候License的冲突 dependencies增加相关的引用(androidTestCompile只有在编译测试用例时候才会运行,...写测试用例 1.1 三步曲 写UI自动化测试用例,归结起来就是3步: 定位View控件 操作View控件 校验View控件的状态 对应Espresso,就是以下3个方法的调用: onView(ViewMatcher...应该统一使用Espresso提供的方法 测试用例,特别是UI自动化测试用例,应该尽量保持逻辑简单,覆盖关键路径就足矣。因为UI变动是很频繁的,越复杂,维护成本就越高,投入产出比就会自然降低了。...运行用例 在运行菜单选择步骤0.2设置的TestRunner,点击执行 测试用例模拟用户操作自动运行 测试用例执行完成,Android Studio的控制台上,能看到如下的结果输出 [image.jpg...原因是,Espresso的用例运行过程是只有当UI线程IDLE和UI队列没有需要执行的事件时,Espresso测试代码才会被执行。使用方无需写Sleep逻辑等待UI绘制完成。

2.3K00
您找到你想要的搜索结果了吗?
是的
没有找到

Android 单元测试UI 测试初步实践

+Shift+T)– 选择要生成的方法选择 androidTest 文件夹,对应于本地 UI 测试 – 完成。...环境且使用Espresso 框架,所以 @RunWith 选择 AndroidJUnit4 类。...通常来说,大多数 APP 设计业务功能的过程,会有很多的异步任务,例如使用 Rxjava 发起网络请求等,但是 Espresso 并不知道你的异步任务什么时候结束,如果单纯使用 Thread.sleep...的 几个重要的 API: onView():获得视图 view,这里通过 withId() 方法搜索,即根据 id 来获取对应的 view check():检验视图 view,可以检查视图文本是否匹配或者视图是否显示等...,主要依靠 match() 方法返回对应的匹配类,Espresso 也自带很多已封装好的 View Matchers 供使用 以链式代码的形式编写验证测试结果的代码,例如 onView(withId(R.id.toolbar

2K10

Android 上一次编写,随处测试

它包括现有的 Android JUnit 4 支持,Espresso 视图交互库和几个新的密钥测试 APIs。这些 APIs 可用于真实和虚拟设备上进行仪器测试。...我们使用 Espresso 视图交互库将文本输入到两个文本字段,然后点击 UI 的按钮。...这个测试可以使用 Robolectric 或任何真实或虚拟设备的本地 JVM 上运行。...你可能决定只真机上运行一些较大的测试,同时模拟器上运行大量较小的单元测试,比如 Robolectric,它可以本地 JVM 上更快地运行测试。...要使用 Robolectric 模拟器本地 JVM 上运行测试用例,请将测试用例放在 “test” 资源根目录,将以下代码添加到 gradle.build: testImplementation(“

1.5K20

基于Kotlin DSL的Espresso和UIAutomator的融合客户端自动化

前言 最近小编在探索端对端测试相关的topic,Android端的自动化测试上,可供我们选择的库并不是很多,而其中小编使用最多的两个库分别是Espresso和UIAutomator。...UIAutomator是一个常用的Android端黑盒测试解决方案,它在设备维度上运行,故而提供了应用程序及程序之外的操作及测试方法。...Espresso Espresso,我们一般会处理三种类型的对象:匹配器、ViewAction和ViewAssertions。...属于God对象,即每次调用都会需要用到UIDevice实例 4、定义UISelector,UISelector的作用是可以通过资源ID查询想要的UI组件,但是UIAutomator没有这种方法,所以我们需要用到步骤...2的资源名称,通过资源名称查询UI组件,进而实现UISelector 5、通过使用UIDevice和UISelector实例化UIObject。

2.2K50

Android UI 测试 - Espresso

Android UI 测试框架,真机运行,相比手动测试,相当于把流程自动化了,并且自动监测结果。 这篇文章主要是阅读官方文档的结果,这渣英文,不敢说翻译。若有理解错误,望指正。...设置 测试环境准备 开发者选项关掉动画: Window animation scale 窗口动画缩放 Transition animation scale 过渡动画缩放 Animator duration...:espresso-core:3.0.2' } 基本使用 src/androidTest 创建文件。...用最少的过滤方法寻找 View,过滤方法越多,框架做的事情越重,比如能通过 withId 获取到唯一的 View,就不要再 withText 了。...如果 View AdapterView 里,比如 ListView、GridView、Spinner,onView() 方法可能无效,要用 onData() 替换。

1.1K10

Android开发者的UI自动化测试上手指南

为什么选择Espresso测试框架? 很简单,Espresso是Google针对Android平台开源的一款最新的Android自动化测试框架。...以上三个小步骤实际上也是我们作为用户使用一个APP的时候所遵循的流程。而我们的测试也是基本遵循这样一个流程的。...一些Espresso的主要方法 UI自动化具体实例 这里建议参照官方文档给出的步骤进行实践,示例给出自己实践demo配置自动化测试的基本步骤。...gradle添加支持 app目录下build.gradledependencies设置对Espresso库的编译依赖,android.defaultConfig设置InstrumentationRunner...编写测试方法,按照前面说的“找元素,做操作, 验证结果”三个步骤编 写测试方法使用@Test注解。 建议使用test作为方法名的开头,这样可以更好区分普通方法测试方法 ?

81120

Android编程权威指南笔记3:Android Fragment讲解与Android Studio的依赖关系,如何添加依赖关系

Activity中使用并且处理自己的输入事件以及生命周期方法等。...这个步骤以后的代码,你也可以看到,或者你打过,我这里也打过。 创建一个动态UI:FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。...应该使用他们所存在的Activity作为沟通的纽带。 Fragment类可以用很多方法来实现各种各样的结果。它的核心,它代表一个更大的运行的特定操作或接口Activity。...file–>project structure…菜单项,然后打开project structuremodule中选中app。...进入到该项目中点击中间位置的“Dependencies”后,进行点击添加按钮“+”。弹出的下拉的菜单中进行选择”Module dependency“。然后选中要的添加,点击“OK”即可。

1.7K30

Android使用Espresso实现UI自动化测试

Google使用Espresso测试了他们自己的超过30个应用程序,包括G+、Maps和Drive。...testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } defaultConfig添加如上语句,支持测试运行...用来指明被测试的Activity,使用@Rule注解 测试方法必须以 test 开头,并且使用@Test注解(否则会报找不到方法异常) @Rule @Rule public ActivityTestRule...@Test @Test public void testLogin() { ... } 定义一个测试方法,当你的测试类运行时,所执行的代码就是Test注解下的方法(Espresso还提供了其他的一些注解...ViewMachers 查找View 使用onView方法找到view:其中参数可以是withId(通过资源id查找),withText(通过显示内容查找)有多个约束条件时,可以使用allOf 如allOf

1.5K20

Material Design — 菜单(Menus)

自上次参加完回音分享会后,我下定决心要洗心革面乖乖打基础,于是开启了这个part,争取两个月不间断更新,写完Material Design与iOS的组件(顺便学学英语),以便今后使用的时候完全不虚!...菜单(Menus) Material Design链接:菜单 ? 菜单 菜单的形式是短暂的动作条上展示选项列表。 菜单出现在与按钮,操作或其他控件的交互。...每个菜单项都包含不关联的选项或操作,可影响app,页面或视图中已选定的元素。 菜单不应该被用作app内导航的主要方法。 ?...剪切和复制没有选择内容时不可用。 ? 不可用的例子 ---- 行为 菜单出现在app内所有其他UI元素之上。 ?...例外情况是,菜单允许选择多个项目,例如使用复选标记。 ---- 简单菜单(Simple Menus) 移动端或pc 使用列表的简单菜单显示特定列表项的选项

5.8K100

Android开发笔记(六十五)多样的菜单

菜单Menu Android的菜单分为两类:选项菜单和上下文菜单,默认使用选项菜单。...顶部导航栏ActionBar》; 下面是选项菜单需要重写的方法: onMenuOpened : 菜单弹出时调用,一般无需重写 onMenuItemSelected : 菜单项选择时调用,查看该方法的源码...一般无需重写 onCreateOptionsMenu : 页面打开时调用,需要重写指定菜单项目 onOptionsItemSelected : 选项菜单菜单项选中时调用,需要重写对不同菜单项做分支处理...方法关闭整个菜单,而选项菜单只是界面上消失,并未调用关闭菜单方法onOptionsMenuClosed; 弹窗PopupWindow 实际开发,Android自带的菜单显得朴素不够灵活,...一个是位置固定,如选项菜单固定从页面底部弹出,溢出菜单固定从页面右上角弹出,上下文菜单固定显示页面中央;另一个是样式固定,无法设置菜单背景,也无法设置其他的菜单显示元素(即使是简单显示左侧图标,也要通过反射机制调用

1.3K30

最新iOS设计规范五|3大界面要素:控件(Controls)

使用有用的自定义命令扩张编辑选项 。通过提供特定于应用程序的其他命令来增加菜单选项,与标准命令一样,任何自定义命令都可以对选择的文本或对象进行操作。 系统提供的命令之后显示自定义命令。...同时,你还需要在启用了辅助功能选项的情况下测试标签,例如粗体文本。 六、页面控件(Page Controls) 页面控件平面页面列表显示当前页面的位置。...两种类型的选择器都使人们可以通过选择单值或多值来轻松输入信息。 ? 选项为中长列表时,可以考虑使用选择器。如果需要显示太短的选项列表,请考虑使用下拉菜单而不是选择器。...通过菜单,您可以无需向主界面添加按钮的情况下为用户提供澄清动作目标或自定义动作行为的方法。例如: · 当用户点击应用的“添加”按钮时,您可以显示一个菜单,让用户指定要添加的项目。...如果您的应用程序包含不属于主界面的基本操作,则可以将这些操作分组菜单。例如,“文件”除了查看和排序内容的选项外,还使用菜单提供诸如添加文件夹或扫描文档之类的操作。 ?

8.5K30

如何让 WPF 程序更好地适配 UI 自动化

menuitem MenuItem 菜单项 menubar 菜单栏 pane 容器 progressbar ProgressBar 进度条 radiobutton RadioButton 单选框...ToolTip 工具提示 tree TreeView 树视图 treeitem TreeViewItem 树视图项 window Window 窗口 额外的,新的 Windows 系统(或者 UWP...控件变化的文字部分,也正确暴露给了 UI 自动化(例如按钮内的文本,列表项文本,菜单项等)。...容器与布局类的控件并没有暴露给 UI 自动化(例如 Grid、StackPanel、Border 等,并没有出现在自动化测试)。 用户控件(UserControl)暴露给了 UI 自动化。...如果你设置了控件的内容(例如按钮/复选框/单选框/列表项的 Content,例如菜单项/选项卡的 Header),那么 UI 自动化捕获到此控件后,其自动化 Name 就是对应指定的这些属性。

35920

Java-GUI 编程之 Swing

当模型发生改变时,它会通知所有依赖它的视图视图会根据模型数据来更新自己。Swing使用UI代理来包装视图和控制器, 还有一个模型对象来维护该组件的状态。...因 此,Swing可以使用插拔式外观感觉 (Pluggable Look And Feel, PLAF)来控制组件外观,使得 Swing图形界面同一个平台上运行时能拥有不同的外观,用户可以选择自己喜欢的外观...使用 setToolTipText()方法,为组件设置对用户有帮助的提示信息 。 很多 Swing 组件如按钮、标签、菜单项等,除使用文字外,还可以使用图标修饰自己。...SwingUtilities.updateComponentTreeUI(mb); // 更新右键菜单及内部所有菜单项UI SwingUtilities.updateComponentTreeUI...3.给组件设置右键菜单,不需要使用监听器,只需要调用setComponentPopupMenu()方法即可,更简单。

2.3K10

.NET混合开发解决方案13 自定义WebView2的上下文菜单

企业级应用软件开发,可能有以下几种种常有且实用的需求 1、禁用网页右键菜单 使用 webView2.CoreWebView2.ExecuteScriptAsync() 方法执行JS脚本即可实现禁用右键菜单...此枚举将始终表示导致上下文菜单请求的活动元素。例如,如果有一个包含多个图像、音频和文本的选择,最终用户在此选择右键单击的元素将是此枚举表示的选项。 Audio  指示上下文菜单是为音频元素创建的。...12个原始菜单项中就包含有四个分割线,所以此处需要删除这4个分割线 修改逻辑代码 再次测试,效果如下图 如果是清空所有的菜单项就比较简单了,直接清空右键菜单列表 IList<CoreWebView2ContextMenuItem...已排序列表包括以下内容: 菜单项的内部名称。 菜单项UI 标签,显示给 UI 的用户。 菜单项的类型。 键盘快捷方式说明(如有 Alt+C)。 自定义菜单项的任何其他属性。...当用户在上下文菜单选择自定义菜单项时,WebView2 控件将触发 CustomItemSelected 事件,开发者该事件可以自定义业务逻辑。

2.8K20

导航组件概览 | MAD Skills

取而代之的是 DrawerLayout 可以触发导航的菜单选项: ?...这一次,导航是由抽屉式导航栏中的菜单项触发的 当用户点击 DrawerLayout 中的菜单项时,应用会导航至和那些菜单项关联的目的地。...这是因为导航组件自动绑定了菜单项和对应的目的地,所以您不必手动编写代码来创建这些链接。 让我们来看一下使这一切成功运转的 UI 层次结构。...这个视图目前左边屏幕外,它是一个 NavigationDrawer 并且其菜单选项被用来目的地之间导航。该视图现在是不可见的,我们需要点击 ActionBar 菜单按钮来将它显示到屏幕上。...它在导航图中提供了一个可能目的地的菜单栏。NavigationView 其中一个很酷的特性是,您可以使用菜单项的 ID 自动地导航到对应菜单项关联的目的地,从而避免了手动创建基于菜单选择的重复代码。

1.6K30
领券