使用UI Automator实现Android UI的自动化测试
0x01 概述
UI Automator测试框架提供了一组API来构建UI测试,用于在用户应用和系统应用中执行交互。UI Automator测试框架非常适合编写黑盒自动化测试,其中的测试代码不依赖于目标应用的内部实现详情。
0x02 使用uiautomatorviewer工具获取Android应用的控件信息
uiautomatorviewer
工具提供了方便的GUI,可以扫描和分析Android设备上当前显示的UI组件。您可以使用此工具检查布局层次结构,并查看在设备前台显示的UI组件属性。利用此信息,可以使用UI Automator创建控制更加精确的测试。
uiautomatorviewer
工具位于<android-sdk>/tools/
目录中。
0x03 在Android项目中添加依赖
1
| androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
|
0x04 创建单元测试类
0x05 创建测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| @RunWith(AndroidJUnit4.class) public class UiTest {
private Instrumentation mInstrumentation;
private UiDevice mUiDevice;
@Before public void setUp() { mInstrumentation = InstrumentationRegistry.getInstrumentation(); mUiDevice = UiDevice.getInstance(mInstrumentation); }
@Test public void testAdd() { UiObject2 digit9 = mUiDevice.findObject(By.res("com.android.calculator2:id/digit_9")); UiObject2 digit8 = mUiDevice.findObject(By.res("com.android.calculator2:id/digit_8")); UiObject2 opMul = mUiDevice.findObject(By.res("com.android.calculator2:id/op_mul")); UiObject2 opEq = mUiDevice.findObject(By.res("com.android.calculator2:id/eq")); UiObject2 result = mUiDevice.findObject(By.res("com.android.calculator2:id/result"));
digit9.click(); opMul.click(); digit8.click(); opEq.click();
String resultValue = result.getText();
Assert.assertEquals(72, Integer.parseInt(resultValue)); }
@After public void tearDown() { } }
|
0x06 执行测试用例
0x07 相关API介绍
常见组件操作,类-UiObject2
功能 |
方法 |
点击 |
public boolean click() |
长按 |
public boolean longClick() |
拖动 |
public void drag(Point dest) |
输入 |
public boolean setText(String text) |
常见设备操作,类-UiDevice
功能 |
方法 |
点击坐标 |
public void click(int x, int y) |
按键 |
public void pressKeyCode(int keyCode) |
滑动 |
public boolean swipe(int startX, int startY,int endX,int endY,int steps)// 1个步长表示5ms |
0x08 其他用途
自动化是用于解放双手,将机械化的重复操作交由程序。UIAutomator可以用于进行重复的UI测试,也可以用于完成其他的类似转发链接给通讯录里的所有好友。
参考链接
- 测试支持库
- Android白盒测试之Instrumentation初探(一)