Android各种UI测试框架介绍
MonkeyRunner
- 编写语言: Python
- 运行环境: Python环境,adb连接PC运行
- 测试对象: UI测试
- 测试限制: 主要使用坐标,逻辑判断较差
Instrumentation
- 编写语言: Java
- 运行环境: adb命令启动或者手机中直接启动测试
- 测试对象: 单个Activity测试,需与测试应用相同的签名
- 测试限制: 主要用于白盒测试和UI测试
Robotium
- 编写语言: Java 基于Instrumentation
- 运行环境: 与Instrumentation相同
- 测试对象: 与Instrumentation相同
MonkeyRunner代码风格示例
device = MonkeyRunner.waitForConnection() #连接手机设备
device.press('KEYCODE_HOME', MonkeyDevice.DOWN_AND_UP) #点击HOME键
Instrumentation代码风格示例
mActivity.runOnUiThread(new Runnable(){
public void run(){
mSpinner.requestFocus();
}
});
Robotium代码风格示例
solo.clickOnMenuItem("Add note");
solo.goBack();
UiAutomator诞生
谷歌在Android4.1推出UiAutomator测试框架
UiAutomator作用
1.主要用于UI自动化测试
2.功能:模拟人对手机操作,模拟各种动作如点击,长按,滑动,按键等操作
3.优点:
- 编写快速
- 运行简单
- API简单易学
- 无Activity限制
- 无需签名
- 几乎可以模拟所有的人为操作
4.缺点:
对权限控制不足 无法像Instrumentation一样高权限操作应用 很多Android API无法利用
为什么选择UiAutomator?
- 编写灵活,使用方便
- 可快速学习
- 限制少
- 模拟目前90%以上的手工操作
- 可扩展性好
- 可调用Android很大部分API
基于以上,可快速转化为生产力,给企业带来效率
一个简单的实例
UiAutomator需要的jar包:在sdk目录下,android.jar和uiautomator.jar
需要将两个jar包加入到Build Path。
新建类后,需要继承UiAutomatorTestCase类
实现打开浏览器,打开百度首页的代码:
package com.jikexueyuan;
import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class Test extends UiAutomatorTestCase {
public void testDemo() throws UiObjectNotFoundException{
UiDevice.getInstance().pressHome();
UiObject browser=new UiObject(new UiSelector().text("浏览器"));
browser.clickAndWaitForNewWindow();
UiObject edit=new UiObject(new UiSelector().className("android.widget.EditText"));
edit.click();
UiDevice.getInstance().pressDelete();
edit.setText("www.baidu.com");
UiDevice.getInstance().pressEnter();
}
}
需要在项目所在目录中进行编译,编译命令为
android create uitest-project -n demo -t 1 -p K:\UIworkspace\Demo1
会在当前目录出现Added file K:\UIworkspace\Demo1\build.xml文件。
在build.xml文件中,将help改为build.
运行整个程序;
将生成的demo.jar文件push到手机的”/data/local/tmp/”目录中;
执行 adb shell uiautomator runtest demo.jar -c com.jikexueyuan.Test