android ui测试uiautomator

Uiautomator,顾名思义,是用于ui自动化测试的,主要是仿真单击,滑动,输入文本等操作,而不用人为地进行操作,如果把一组反复进行的操作用uiautomator实现,那么将大大提高效率。但是uiautomator使用范围非常有限,学习之后会知道,在uiautomator中,每一个ui控件都是UiObject的对象,并没有提供获得控件对应控件类(android.widget.*)的接口。所以在uiautomator中,一个ButtonImageView都是一样的——都是UiObject的对象。


Uiautomator很简单,只要熟悉几个类就能上手,类图如下

android ui测试uiautomator_第1张图片


接下来是简单介绍uiautomator的使用步骤,具体可以看官网http://developer.android.com/tools/testing/testing_ui.html#prepare

1.创建一个java project,导入需要的库或jar包,如图

android ui测试uiautomator_第2张图片

2.创建测试类,该类需继承UiAutomatorTestCase,应是如下的结构

public class MyTestCase extends UiAutomatorTestCase{


public void testXXX() throws UiObjectNotFoundException{

      UiDevice.getInstance().pressHome();

   }


public void testXXX() throws UiObjectNotFoundException{

   }

}

每一个publictest开头方法就是一个case。需要注意的是运行时方法的调用顺序并不是代码中的位置顺序,而是根据方法名的ASCII码大小进行顺序调用的。

3.程序编写完之后,生成配置文件

sdktool目录下运行:

android create uitest-project -n projectName -t targetID -p projectPath

projectName为生成的目标jar包名称

我的运行参数如下,显示文件成功生成


-t后面是目标平台版本的id,可通过 android list targets查看,这里我的andorid.jaruiautomator.jar是从android-17导入的,所以选择对应的2,如图

android ui测试uiautomator_第3张图片


刷新一下,在项目的顶层目录下生成三个配置文件,如图

android ui测试uiautomator_第4张图片


build.xml:编译可生成项目的jar文件

local.properties:保存了sdk路径

project.proerties:保存了目标平台版本 


4.编译build.xml生成可以部署到手机设备上的项目jar文件

有两种方式:

build.xml中的default改为”build“

1)终端:cd到工程目录下执行ant -buildfile build.xml

2Eclipse:右击build.xml——>run as——>ant build

此时在工程的bin目录下就会生成了CalculatorTest.jar


启动模拟器: emulator  @模拟器名称


5.jar部署到手机并执行

adb push 目标jar文件的绝对路径 /data/local/tmp

adb shell uiautomator runtest CalculatorTest.jar -c CalculatorTestCase

jar和类都是可以指定多个,用空格分开,类名后面追加#MethodName 则只运行某一方法,否则执行所有方法

注意:类名必须是全称,即包括包名,这里是在默认包下

此时会输出如下信息

android ui测试uiautomator_第5张图片

current:当前运行的测试顺序编号,故和方法名有关

class:当前运行方法所在类的类名

numtests:测试总数,一个public testXXX方法就是一个测试

test:当前测试的方法名

INSTRUMENTATION_STATUS_CODE:测试状态码,一般1是正在测试,0是测试通过,-1是错误

也可传参数

-e  key  value


最后介绍一下uiautomatorViewer这个工具,编写case是基本都用到它,这个工具在sdktools下。该工具用于捕捉并解析设备当前界面的组成结构(右上),点击控件,会显示控件的各种详细信息(右下),帮助我们在编程中方便地找到该控件。如图

android ui测试uiautomator_第6张图片






每次这样测试很繁琐,所以引入git中的uiautomatorhelper项目,添加jar包到相应的工程中。
测试类写main方法




你可能感兴趣的:(android,UiAutomator)