问题:UIAutomator有一个麻烦:无法通过Eclipse直接编译。
解决:UIAutomator需要经历一系列的命令进行编译。
参:《深入理解Android自动化测试(移动开发)》和http://developer.android.com/tools/testing/testing_ui.html
具体步骤如下:
1) 通过如下命令创建编译文件built.xml
<android -sdk>/tools/android create uitest -project -n <name> -t 数字 -p <path>
其中,<name>为UIAutomator测试工程名(如CallRateVoLTE),而参数<path>为对应的待编译的工程根目录(如D:\android-sdk\eclipse\workspace\CallRateVoLTE)
实例:create.bat文件:
d: cd D:\android-sdk\tools android create uitest-project -n CallRateVoLTE -t 4 -p D:\android-sdk\eclipse\workspace\CallRateVoLTE
创建完成后,刷新Eclipse中的测试项目CallRateVoLTE,会出现新的build.xml文档。
2) 进入工程的根目录,
cd <path_to_your_TestProject>
实例:进入工程目录后,编译项目ant build,build.bat文件:
cd D:\android-sdk\eclipse\workspace\CallRateVoLTE ant build
编译成功后,进入项目文件夹的bin文件夹中,将看到新生成的CallRateVoLTE.jar
3) 将生成的jar包推送到手机端
adb push <path_to_output_jar> /data/local/tmp
实例:push.bat文件:
adb push D:\android-sdk\eclipse\workspace\CallRateVoLTE\bin\CallRateVoLTE.jar /data/local/tmp/
4) 在手机端运行自动化脚本(即JAR包)中的测试用例,命令如下
adb shell UIAutomator runtest <path_to_output_jar> -c <entrance_class>
实例:run.bat文件:
adb shell uiautomator runtest CallRateVoLTE.jar -c com.uiauto.CallBefore pause
注意:运行时必须指定到具体测试类名,而不是项目名。
5) 最后用OnlyOne.bat将上面4个命令文件串起调用:
@echo off cd D:\android-sdk\eclipse\workspace\CallRateVoLTE call D:\android-sdk\eclipse\workspace\CallRateVoLTE\create.bat call D:\android-sdk\eclipse\workspace\CallRateVoLTE\build.bat call D:\android-sdk\eclipse\workspace\CallRateVoLTE\push.bat call D:\android-sdk\eclipse\workspace\CallRateVoLTE\run.bat
注意上述5个bat文件同在待测试的工程根目录下。