自动测试工具UiAutomator

前面几篇文章主要总结了MonkeyRunner,Robotium,今天主要是对另一个自动测试工具UiAutomator进行总结。以上三种自动测试化工具的特点如下:
1、MonkeyRunner:优点:操作最为简单,可以录制测试脚本,可视化操作;基于Pyhon语言编写,语法简单易学,可以跨应用,可以直接以ID来操作测试,不需要签名等其他工具;缺点:运行速度慢,容易出错,可用的接口少等;
2、Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大,基于java语言编写;缺点是针对APK操作,而且需要对被测的APK重新签名(有工具),因此操作相对复杂;
3、UiAutomator:优点:可以对所有操作进行自动化,操作简单,能看见点击的手势,基于java语言编写;缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,修改脚本后,需要重新生成.jar文件并push至设备中再进行adb shell命令,此操作也相对比较复杂;
以上三种工具若想对apk单个界面进行快速自动测试,个人比较偏向MonkeyRunner,此工具易学,还可以引用第三方插件WrapeasyMonkey来操作,比较方便,修改代码运行也相对比较容易,只是运行速度慢。

UiAutomator使用方法如下:
一、环境搭建:
1,安装JDK并添加环境变量。安装后,一定要通过JAVA_HOME的方式添加环境变量,即先建立JAVA_HOME变量,然后在path中添加%JAVA_HOME%\bin;
2,添加SDK环境变量。一定要先建立ANDROID_HOME,然后把%ANDROID_HOME%\tools添加到path中;
3,将ADT_bundle目录添加至系统变量path中。如本机:E:\SoftWare\adt-bundle-windows-x86-20140702\sdk\platform-tools;E:\SoftWare\adt-bundle-windows-x86-20140702\sdk\tools;E:\SoftWare\adt-bundle-windows-x86-20140702\sdk\build-tools\android-4.4W
4,安装ANT工具,并添加环境变量。如在path中添加E:\adt_bundle\sdk\apache-ant-1.8.1\bin
二、详细操作:
1,启动Eclipse,新建Java Project,添加JUnit
操作界面1
操作界面2

2,添加Android库,找到路径sdk\platforms\android-20\下面的android.jar和uiautomator.jar:
操作界面3

3,在src下添加com包并添加class文件,代码如下:
java代码
以上工程路径为E:\adt_bundle\eclipse_workspace\test_uiautomator,类全名com.Runner

4,找到SDK的ID:
cmd进入sdk\tools目录下,输入命令:android list
查看API大于15的SDK的ID值,当前是4;
android list图

5,执行命令:android create uitest-project -n AutoRunner -t 4 -p E:\adt_bundle\eclipse_workspace\test_uiautomator
命令具体参数:android create uitest-project -n -t -p name就是将来生成的jar包的名字,可以自定义,android-sdk-ID就是上面看到的4;path是Eclipse新建的工程的路径;运行命令后,将会在工程的根目录下生成build.xml文件。

6,编译生成jar文件
cmd进入当前的工程目录,输入命令:ant build,在工程目录的bin目录下就自动生成了一个AutoRunner.jar文件
ant build命令

7,打开模拟器,push并运行jar文件
adb push <jar文件路径> data/local/tmp
adb shell uiautomator runtest <jar文件名> -c <工程中的类名,包含包名>
具体命令如下:
adb push E:\adt_bundle\eclipse_workspace\test_uiautomator\bin\AutoRunner.jar data/local/tmp
adb shell uiautomator runtest AutoRunner.jar -c com.Runner
模拟器就开始自动执行了

遇到的问题:
cmd进入当前的工程目录,输入命令:ant build,提示:Class org.apache.tools.ant.taskdefs.condition.And doesn’t support the nested “matches” element
解决办法:表示jdk与ant为不同版本,jdk安装版本的是1.8而ant却是1.6的,下载ant1.8版本的,重新修改环境变量,重启机器即可

发表评论

电子邮件地址不会被公开。 必填项已用*标注

表情
  • 默认
  • 梦幻西游
  • 私人订制