环境准备:
新版Android SDK提供2个工具用以UI的自动化:
uiautomatorviewer : 对应用程序中组件用来扫描识别UI上面的控件
uiautomator :JAVA类库,包含一些自定义的UI功能测试,用以自动化和跑test case的引擎。
这两个工具只在Android SDK Tools, Revision 21 or higher和Android SDK Platform, API 16 or higher才有。
下载并加压SDK到非中文、较短的路径中-双击SDK Manager.exe创建虚拟机或者使用USB连接实际的device来做自动化(android版本在4.1以上),且要在开发模式下把USB Debugging打开。
当AVD创建好,或者设备通过USB连接到电脑后,可以以下命令检查设备的id
<android-sdk>\platform-tools>adb devices
步骤:
1. 安装JDK并配置环境变量(版本>1.6.0)
2. 下载安装Android SDK
注:SDK(版本>21),platform-tools(版本>16)(查看platform-tools版本:D:\android-sdk\sdk\platforms)
3. 下载安装Android 4.2 (API17)(注:只有Android 4.1.2(API 16)以上才支持uiautomator)
4. 设置ANDROID_HOME环境变量-(新建ANDROID_HOME 值:D:\android-sdk\sdk)如下图:
5. 下载ant并设置ant的环境变量
Windows下ANT用到的环境变量主要有2个,ANT_HOME 、PATH。
环境变量配置:
1). ANT_HOME = D:\apache-ant-1.9.2
2). 将%ANT_HOME%\bin;%ANT_HOME%\lib添加到环境变量的path中
3). cmd窗口输入ant –version,验证ant是否安装配置成功
6. Libraries下导入文件、类库
1).打开Eclipse,File->new->Java Project(如命名为:test)
2).点击Java Project->Properties->Java Build Path->Libraries
Add External JARs... - 把android-sdk\platform\android-xx里面的android.jar和uiautomator.jar添加进来
3).Add Library... - 添加JUnit - JUnit3类库
7. 在src里添加目录src/com/uia/example/my
1).Src->new-package (例:命名为com.uia.example.my)
8. 在my下添加一个JUnit Test Case(例:命名为LaunchSettings)
Src->new->other->Java->Junit-Junit Test Case
9. 复制以下代码到testcase,保存:
package com.uia.example.my;
import android.widget.ListView;
import android.widget.Switch;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class LaunchSettings extends UiAutomatorTestCase {
public void testDemo() throws UiObjectNotFoundException {
getUiDevice().pressMenu();//点击 Menu 按钮..
UiObject settingApp1 = new UiObject(new UiSelector().text(“System settings”));
settingApp1.click();//点击System settings
getUiDevice().pressHome();//点击 HOME 按钮..(执行成功)
//getUiDevice().pressBack();//(执行成功)
getUiDevice().pressMenu();
UiObject settingApp2 = new UiObject(new UiSelector().text(“Manage apps”));
settingApp2.click();//点击应用程序管理
try {
Thread.sleep(3000); //加等待时间(3s)
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
getUiDevice().pressBack();//点击返回按钮(未执行-加等待时间执行Ok)
}
}
10. 运行cmd命令,建build.xml
1). cd D:\android-sdk\sdk\tools
2). - <android-sdk>/tools> android create uitest-project -n <name> -t 1 -p <path> (<name>是Java project名,-t 后面的数字是设备target id,用命令android.bat list targets查看, <path>是项目所在目录---依据个人情况而定)
我的命令:
android create uitest-project -n test -t android-18 -p D:\workspace\test
新建build.xml成功后会看到:
11. 切换到项目所在目录(build.xml文件所在目录),运行命令:ant build
完成后会在/bin下生成一个 .jar文件
cmd 命令:
1). cmd 到路径d:\work\workspace\test 下
2).输入命令ant build 回车
12. 使用adb push命令,把test case(LaunchSettings.jar)上传到被测试设备上
- <android-sdk>\platform-tools>adb push <path_to_output_jar> /data/local/tmp/ (<path_to_output_jar>:jar的文件目录)
cd D:\android-sdk\sdk\tools
adb push D:\workspace\test\bin\test.jar /data/local/tmp/
(红字体部分是步骤11在bin下生成的)
13. 最后,运行命令,case就会在设备上跑起来了。
- <android-sdk>\platform-tools>adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings
cd D:\android-sdk\sdk\platform-tools
adb shell uiautomator runtest test.jar -c com.uia.example.my.LaunchSettings