UI Automator + Eclipse + Ant 编译安装运行
2015-09-14 15:56
561 查看
1 环境准备
Android开发环境的准备,首先通过ui automator viewer的测试,可以获取到屏幕的元素见:http://blog.csdn.net/ericyue83/article/details/48375005
Eclispe 和 Ant安装并配置
准备测试设备,本人通过真实设备小米手机作为测试对象
2 创建Eclipse项目
打开Eclispe,创建一个Java Project(项目名:UIAutomatorTestCaseDemo)增加android.jar,uiautomator.jar到项目的external jar中
( jar在本机的如下类似目录:%android_home%\platforms\android-22)
新建一个class(类名:testcasedemo,extend UiAutomatorTestCase),包名为com.lewi.demo
3 生成对应的build.xml文件
找到项目的目录,通过如下命令生成ant需要的build.xml文件。D:\android>android create uitest-project -n UIAutomatorTestCaseDemo -t 1 -p D:\EclipseWorkspace\UIAutomatorTestCaseDemo
Added file D:\EclipseWorkspace\UIAutomatorTestCaseDemo\build.xml
运行完成后,在Eclispe中刷新项目,会看到新产生的build.xml文件。
4 配置ant targets
右键build.xml,选择Run As…选择,可以配置此项目的Targets。如下图:默认情况,Target只选择了help。根据需要,我选择了help, build, install,test。当运行到test target提示
Launching tests from Ant not supported yet
跳转到%android_home%/tools/ant/uibuild.xml查看到,是以为当前版本不支持ant test。
根据uibuild.xml里面的提示,更新了自己的需要测试内容,再次ant test,测试通过。
更新后的uibuild.xml中test部分如下:
<target name="test" description="Runs tests"> <!-- todo: fix this --> <!-- <fail message="Launching tests from Ant not supported yet" /> --> <exec executable="${adb}" failonerror="true"> <arg line="${adb.device.arg}" /> <arg value="shell" /> <arg value="uiautomator" /> <arg value="runtest" /> <arg value="${out.filename}" /> <arg value="-e" /> <arg value="class" /> <arg value="com.lewi.demo.testcasedemo" /> </exec> </target>
目前已经搞定ant一键编译,安装和测试。在Eclipse 中,可以通过快捷方式Alt + Shift + X , Q 执行ant。
5 修改测试用例Demo,让其成为一个完成的用例。
需求:通过滑屏解锁手机,然后点击Home键,检查主屏是否出现。testcasedemo代码如下:
package com.lewi.demo; import android.os.RemoteException; import com.android.uiautomator.testrunner.UiAutomatorTestCase; import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundException; import com.android.uiautomator.core.UiScrollable; import com.android.uiautomator.core.UiSelector; public class testcasedemo extends UiAutomatorTestCase { public void testDemo() throws UiObjectNotFoundException, InterruptedException, RemoteException { if(!getUiDevice().isScreenOn()){ getUiDevice().wakeUp(); getUiDevice().swipe(250, 850, 250, 100, 2); } getUiDevice().waitForWindowUpdate(null, 2000); getUiDevice().pressHome(); UiObject clockValidation = new UiObject(new UiSelector().packageName("com.miui.home")); assertTrue("could not find clock",clockValidation.exists()); } }
使用ant进行build, install,test后,输出如下:
...... compile: [javac] Compiling 1 source file to D:\EclipseWorkspace\UIAutomatorTestCaseDemo\bin\classes -post-compile: -dex: [dex] input: D:\EclipseWorkspace\UIAutomatorTestCaseDemo\bin\classes [dex] Found Deleted Target File [dex] Converting compiled files and external libraries into D:\EclipseWorkspace\UIAutomatorTestCaseDemo\bin\classes.dex... -post-dex: -jar: [jar] Building jar: D:\EclipseWorkspace\UIAutomatorTestCaseDemo\bin\UIAutomatorTestCaseDemo.jar -post-jar: build: install: [exec] 666 KB/s (1364 bytes in 0.002s) test: [exec] open: Permission denied [exec] open: Permission denied [exec] INSTRUMENTATION_STATUS: numtests=1 [exec] INSTRUMENTATION_STATUS: stream= [exec] com.lewi.demo.testcasedemo: [exec] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner [exec] INSTRUMENTATION_STATUS: test=testDemo [exec] INSTRUMENTATION_STATUS: class=com.lewi.demo.testcasedemo [exec] INSTRUMENTATION_STATUS: current=1 [exec] INSTRUMENTATION_STATUS_CODE: 1 [exec] INSTRUMENTATION_STATUS: numtests=1 [exec] INSTRUMENTATION_STATUS: stream=. [exec] INSTRUMENTATION_STATUS: id aeaa =UiAutomatorTestRunner [exec] INSTRUMENTATION_STATUS: test=testDemo [exec] INSTRUMENTATION_STATUS: class=com.lewi.demo.testcasedemo [exec] INSTRUMENTATION_STATUS: current=1 [exec] INSTRUMENTATION_STATUS_CODE: 0 [exec] INSTRUMENTATION_STATUS: stream= [exec] Test results for WatcherResultPrinter=. [exec] Time: 3.603 [exec] OK (1 test) [exec] INSTRUMENTATION_STATUS_CODE: -1 BUILD SUCCESSFUL Total time: 7 seconds
当我们使用Ecllipse调试通过后,我们也可以使用命令行去部署和运行:
上次Jar包到测试设备: adb push UIAutomatorTestCaseDemo.jar /data/local/tmp
运行测试用例: adb shell uiautomator runtest UIAutomatorTestCaseDemo.jar -c com.lewi.demo.testcasedemo
6 Reference
http://android.toolib.net/tools/testing/testing_ui.html#creating7 Todo List:
如何处理中文信息如何把Demo代码共享到github
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories