UiAutomator
和Espresso
最大的不同是支持多个 App,所以UiAutomator
是所有 Android 测试工程师的必备技能。
UiAutomator
2.0 版本依赖了Instrumentation
使得UiAutomator 2
可以轻松的拿到 Activity 的 Context,就可以像写 Android 应用程序一样,实现很多功能。
快速开始
添加依赖库
Module/build.gradle1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } }
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.java1 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 { mDevice.pressHome(); mDevice.findObject(new UiSelector().text("设置")).click(); }
}
|
运行测试类
右键,选择 run 'UiAutomatorTest'
运行效果
命令行运行
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