Android - 测试框架之 UI Testing - UiAutomator

UiAutomatorEspresso最大的不同是支持多个App,所以UiAutomator是所有Android测试工程师的必备技能。

UiAutomator2.0版本依赖了Instrumentation使得UiAutomator 2可以轻松的拿到Activity的Context,就可以像写Android应用程序一样,实现很多功能。

快速开始

添加依赖库

Module/build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
android {
defaultConfig {
// Testing config
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
// Testing dependencies
androidTestCompile 'com.android.support:support-annotations:23.1.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
androidTestCompile 'org.hamcrest:hamcrest-integration:1.3'
}

新建测试类

androidTest文件夹下新建一个测试类

UiAutomatorTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@RunWith(AndroidJUnit4.class)
public class UiAutomatorTest {
Context mContext;
UiDevice mDevice;
@Before
public void setUp() {
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mContext = InstrumentationRegistry.getContext();
}
@Test
public void testSetting() throws UiObjectNotFoundException {
// Home键
mDevice.pressHome();
// 找到设置并点击
mDevice.findObject(new UiSelector().text("设置")).click();
}
}

运行测试类

右键,选择 run 'UiAutomatorTest'

run

运行效果

run

命令行运行

1
2
3
4
5
# 查找
$ adb shell pm list instrumentation
instrumentation:cn.gavinliu.uiautomator.test/android.support.test.runner.AndroidJUnitRunner (target=cn.gavinliu.uiautomator)
# 运行
$ adb shell am instrument -w cn.gavinliu.uiautomator.test/android.support.test.runner.AndroidJUnitRunner

UiAutomator 主要API

Instrumentation

Instrumentation也是一个测试框架,可以操作很多系统API,UiAutomator2.x引入了它,大大增强了UiAutomator的功能。

UiDevice

UiSelector

UiObject

Gavin Liu wechat
欢迎您扫一扫上面的二维码,订阅我的微信公众号!