您的位置:首页 > 编程语言 > Java开发

UI Automator + Eclipse + Ant 编译安装运行

2015-09-14 15:56 495 查看

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#creating

7 Todo List:

如何处理中文信息

如何把Demo代码共享到github
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  eclipse android ant