手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android App开发的自动化测试框架UI Automator使用教程
Android App开发的自动化测试框架UI Automator使用教程
摘要:Android的自动化测试有很多框架,其中uiautomator是google官方提供的黑盒UI相关的自动化测试工具,(GitHub主页:c...

Android的自动化测试有很多框架,其中ui automator是google官方提供的黑盒UI相关的自动化测试工具,(GitHub主页:case使用java写,今天实践了一下官方文档中样例程序,其中还是有一些小问题需要总结一下的。

环境准备:

1.JDK(是的,你没看错,基础的android开发环境必备),以及对应的环境变量配置,不会的可以自己百度下下

2.Android Studio(IDE尊崇个人意愿)

3.android SDK以及配置

4.ANT(主要用于build我们的脚本,生成jar包)

ant的搭建主要分几步:

1.下载ant安装文件并且解压安装;

2.新建系统环境变量ANT_HOME,参数值是你的ant安装目录;

3.在Path环境变量中添加ant安装目录的bin文件夹,比如我的就是C:codapache-ant-1.9.6bin

4.配置完以后,测试一下,在命令行下输入ant -version,如果显示你所安装的ant版本信息,证明环境变量配置成功

使用流程

1、使用ADT创建一个java的项目

在创建项目的时候要加上JUnit与你使用的Android platforms中对应的android.jar与uiautomator.jar

Android App开发的自动化测试框架UI Automator使用教程1

2、新建一个包(我这里就只叫com)

3、再这个包下创建一个class,输入以下java代码,代码全是官方文档上的代码,除了最上面的package

package com; 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 Runer extends UiAutomatorTestCase { public void testDemo() throws UiObjectNotFoundException { // Simulate a short press on the HOME button. getUiDevice().pressHome(); // We're now in the home screen. Next, we want to simulate // a user bringing up the All Apps screen. // If you use the uiautomatorviewer tool to capture a snapshot // of the Home screen, notice that the All Apps button's // content-description property has the value “Apps”. We can // use this property to create a UiSelector to find the button. UiObject allAppsButton = new UiObject(new UiSelector() .description("Apps")); // Simulate a click to bring up the All Apps screen. allAppsButton.clickAndWaitForNewWindow(); // In the All Apps screen, the Settings app is located in // the Apps tab. To simulate the user bringing up the Apps tab, // we create a UiSelector to find a tab with the text // label “Apps”. UiObject appsTab = new UiObject(new UiSelector() .text("Apps")); // Simulate a click to enter the Apps tab. appsTab.click(); // Next, in the apps tabs, we can simulate a user swiping until // they come to the Settings app icon. Since the container view // is scrollable, we can use a UiScrollable object. UiScrollable appViews = new UiScrollable(new UiSelector() .scrollable(true)); // Set the swiping mode to horizontal (the default is vertical) appViews.setAsHorizontalList(); // Create a UiSelector to find the Settings app and simulate // a user click to launch the app. UiObject settingsApp = appViews.getChildByText(new UiSelector() .className(android.widget.TextView.class.getName()), "Settings"); settingsApp.clickAndWaitForNewWindow(); // Validate that the package name is the expected one UiObject settingsValidation = new UiObject(new UiSelector() .packageName("com.android.settings")); assertTrue("Unable to detect Settings", settingsValidation.exists()); UiObject reportBug = new UiObject(new UiSelector().text("Sound")); reportBug.clickAndWaitForNewWindow(); UiObject soundValidation = new UiObject(new UiSelector() .text("Volumes")); assertTrue("Unable to detect Sound", soundValidation.exists()); getUiDevice().pressHome(); } } 4、使用ant工具生成build.xml

我这里在使用ADT自已的ant插件时提示

build.xml:26: Class not found: javac1.8

网上查了查,是插件与我java环境不符,下载最新的ant插件就可以了http://ant.apache.org/bindownload.cgi

Android App开发的自动化测试框架UI Automator使用教程2

下载这个tar.gz包,解压,然后将apache-ant-1.9.4bin目录添加到环境变量PATH中

然后cmd到android sdk的tools目录,使用andrlid list命令,记住你将要在模拟器中运行的(也是你刚刚导入android.jar与uiautomator.jar包时所在的platforms)

在cmd下使用

android create uitest-project -n <name> -t <android-sdk-ID> -p <path>

-n 为生成的jar包名称,自已任意定义,

-t 为上面查看到的值,我这里是1

-p 为输出路径,这里就是刚才创建的java项目所在的路径

android create uitest-project -n AutoRunner -t 1 -p D:myAndroidStudyandroidTest

然后再cmd进入D:myAndroidStudyandroidTest,使用ant build命令生成AutoRunner.jar文件

5、将这个AutoRunner.jar文件push到模拟器中

adb push AutoRunner.jar /data/local/tmp

6、使用

adb shell uiautomator runtest AutoRunner.jar –c com.Runer

使Runer类运行

Android App开发的自动化测试框架UI Automator使用教程3

我的代码里又在官方基础上多了一个点击”sound”的操作与点击Home键操作

UiObject reportBug = new UiObject(new UiSelector().text("Sound")); reportBug.clickAndWaitForNewWindow(); UiObject soundValidation = new UiObject(new UiSelector() .text("Volumes")); assertTrue("Unable to detect Sound", soundValidation.exists()); getUiDevice().pressHome(); image

Android App开发的自动化测试框架UI Automator使用教程4

这个其实也只是一个简单的玩具代码,没有什么意义,但是官方作为一个引导,其中也使用了一些最常见的接口。以后再深入的学习uiautomator

总结

优点:

1.可以对所有操作进行自动化,操作简单;

2.不需要对被测程序进行重签名,且,可以测试所有设备上的程序,比如~某APP,比如~拨号,比如~发信息等等

3.对于控件定位,要比robotium简单一点点

缺点:

1.uiautomator需要android level 16以上才可以使用,因为在level 16及以上的API里面才带有uiautomator工具

2.如果想要使用resource-id定位控件,则需要level 18及以上才可以

3.对中文支持不好(不代表不支持,第三方jar可以实现)

4.个人感觉,控件定位不如robotium那样层级分明,仅仅个人感觉,用户行为注入还是和插桩有点点区别的

【Android App开发的自动化测试框架UI Automator使用教程】相关文章:

Android 自动化测试经验分享 深入UiScrollable

android monkey自动化测试改为java调用monkeyrunner Api

Android开发笔记 Handler使用总结

Android开发笔记之: 数据存储方式详解

Android Studio使用教程图文详解

Android开发: fragment解析及案例

Android开发笔记 最好使用eclipse

android 开发教程之日历项目实践(一)

Android 自动判断是电话,网址,EMAIL方法之Linkify的使用

Android开发笔记之:Dialog的使用详解

精品推荐
分类导航