Espresso Test Recorder的好处
- 直接录制与APP的所有交互操作
- 支持在录制过程中添加断言
- 可直接生成
可回放
的测试脚本,基本不需要做任何修改
原文地址: Create UI Tests with Espresso Test Recorder,以下为正文
注意: Espresso Test Recorder在AndroidStudio 2.2 Beta版本之后才有。
Espresso Test Recorder可以在不写一行代码的情况下创建UI测试。通过录制一个测试场景,你可以记录设备的交互并在APP的部分快照中添加断言来验证元素。Espresso Test Recorder会保存录制并自动生成对应的UI测试,并可直接运行来测试你的APP。
Espresso Test Recorder编写的测试基于Espresso Testing framework,API在Android Testing Support Library。Espresso API鼓励你创建基于用户操作的简洁且可信赖的UI测试。通过使用expectations、interactions和assertions而不是底层APP的Activity和Views,这样的结构防止了测试的脆弱性并优化测试运行速度。
查看下面的视频可对Espresso Test Recorder有一个快速的了解,一个新的特性在AndroidStudio2.2:
视频指导地址(Markdown不能直接添加视频地址,只能放链接): espresso-test-recorder-overview_v2
关闭你设备中的动画
在使用Espresso Test Recorder之前,确保你关闭你设备中的动画以防止出现非预期的结果。依据"安装Espresso"说中在测试UI在单个APP中中,但是记得你不需要手工设置依赖相关配制到Espresso库中,因为Test Recorder会自动帮你做,当你录制的时候。这些步骤只需要在一个已有的项目中做一次。
录制一个Espresso测试
Espresso测试由两个主要部分组成: 在View元素中的UI交互和断言。UI交互包括一个人可以用来与你APP交互的点击和输入动作。断言验证在屏幕中的可见元素的存在或内容。比如,针对Notes testing app的一个Espresso测试,包括UI交互针对点击一个按钮和写一个新的笔记,但使用断言来验证按钮的存在和笔记内容。
录制UI交互
为了开始录制一个Espresso Test Recorder,参考下面的步骤
- 点击 Run > Record Espresso Test。
- 在 Select Deployment Target 窗口中,选择你想要录制的测试的设备。如果有必要,创建一个新安卓虚拟设备。点击 OK。
- Espresso Test Recorder会激活构建你的项目,APP一定要在Espresso Test Recorder允许你交互之前,安装且启动。在APP启动之后,Record Your Test 窗口会显示,如果你还没有跟设备交互,主面板会显示"No event recorded yet." 与你的设备开始交互来启动记录事件,比如"点击"和"输入"动作。
注意:在你开始记录交互操作之前,在设备中你也许会看到一个对话框显示"Waiting for Debugger"或"Attaching Debugger"。Espresso Test Recorder使用debugger来记录UI事件。当debugger被attach,对话框将会自动关闭,不要点击 Force Close.
录制的交互将会显示在主面板中的 Record Your Test ,像下图1显示。当你开始运行测试,Espresso测试执行这些测试按相同的次序。
图1添加断言来验证UI元素
断言通过三种主要的方式验证一个View元素的存在或内容:
- text is : 校验选择元素的文件内容
- exists : 屏幕中当前的View内,校验元素是存在的
- does not exist : 当前的View内,校验元素是不存在的
给测试中添加断言,参考下面的步骤:
- 点击 Add Assertion 。一个 "屏幕截图"对话会显示出来,当Espresso获取到关于当前APP状态的UI结构或其它信息。一旦Espresso获取到屏幕截图,对话框将会关闭。
- 在当前面板 Record Your Test 窗口的右侧会显示当前屏幕显示的布局样式。选择一个需要创建断言的可见元素,在截图中点击元素或点击在窗口底部的 Edit assertion 对话框的第一个下拉菜单。被选择的View对象会在红框中高亮。
- 在Edit assertion 对话框的第二个下拉菜单中选择你想使用的断言。Espresso交会弹出针对选择元素的断言
- 如果你选择"text is"断言,Espresso会自动插入当前选择元素中的值。你可以在 Edit assertion 编辑文本来匹配你想得到的断言结果。
- 点击 Save and Add Another 来创建另外一个断言或点击 Save Assertion 来关闭断言面板。
在图2中,显示了"text is"断言被创建用于验证笔记的标题是"Happy Testing!":
图2
当创建一个断言时,你可以继续与你的APP交互,只要断言面板 Record Your Test 窗口仍然打开。Espresso Test Recorder将持续录制你的动作,一旦你正在编辑的断言保存后,新的交互会显示在后面。针对断方的截屏会保存当你在设备或模拟器中点击"Add Assertion"时的APP布局。
注意:Espresso Test Recorder还是一个实验性的特性,工具当前仅支持可见层断言。你可以通过添加断言来确定屏幕中的元素,屏幕截取仍显示可见模式,并且选择的元素的红色边框和无素在屏幕中的实际位置是不匹配的。
保存录制
一旦,你完成与你APP的交互并添加了断言,使用下面的步骤来保存你的记录并生成Espresso测试脚本:
- 点击 Complete Recording 。Pick a test class name for your test 窗口将会显示。
- Espresso Test Recorder将会对测试一个基于启动的Activity的唯一名字。如果你想改变测试名的话,使用 Test class name 。点击 Save 。
如果你没有给项目添加Espresso依赖, Missing Espresso dependencies 对话框会在你保存的时候显示。 点击 Yes 将会自动添加依赖至你的 build.gradle 文件中。
- 在Espresso Test Recorder生在文件之后,会自动打开。并且 Android Studio将会在IDE的 Project 窗口中找开测试类。
测试被保存的位置依据你的instrumentation test,也与启动的Activity包名有关。比如,测试Notes testing app保存在 src > androidTest > java > com.example.username.appname 录制测试的APP模块下。
本地运行Espresso测试
为了运行Espresso测试,使用在IDE左侧的 Project 窗口:
- 打开APP模块文件夹,找到你想运行的测试。测试的位置依据你的instrumentation test位置和启动Activity包名。下面的例子说明Notes testing app的测试应该保存在哪:
- 如果你在窗口中使用Android视图,进入 java > com.example.username.appname(androidTest) .
- 如果你在窗口中使用 Project视图, 进入 src > androidTest > java > com.example.username.appname 模板文件夹。
- 在测试代码上点击右键,选择 Run 'testName' .
- 同样,你可以打开测试文件,在生成的测试类或方法中右键点击来运行测试。了解更多关于如何运行测试在测试你的APP。
- 在 Select Deployment Target 窗口,选择你想要运行测试的测试设备。如果有需要,创建一个新安卓虚拟设备。点击 OK 。
在IDE的底部 Run 窗口中,会显示测试的运行过程。Android Studio运行项目的完整构建并在 Run 窗口中打开一个测试名称的页签,如图3展示。你可以在页签中检查是否你的测试通过或失败,以及你的测试运行的多久。当测试结束后,页签将会显示 "Tests ran to completion."
了解更多的编写测试的运行配制,可以去创建并编辑 运行、调试 配制看"Defining a test configuration for a class or method"部分
运行Android的Espresso测试在 Firebase Test Lab
你可以在Firebase Test Lab运行的Espresso测试在数以百计设备配制中。在Test Lab中可以使用free daily quota on the Spark plan来免费运行测试。为了在Firebase Test Lab中运行测试,为你的APP创建一个Firebase项目,并按Android Studio的操作说明来运行你的测试使用Firebase Test Lab.
网友评论
就是一篇译文,文章前面有原文地址😁
谢谢,欢迎交流