• 1. android sdk至少需要android 4.1,所以先通过SDK manager更新sdk,我这里使用android4.2
  • 2. eclipse至少需要3.6.2,否则不支持
  • 3. 配置环境变量path,加入java,android sdk tool的路径
  • 4. 通过AVD Manager启动android4.2的虚拟机
  • 5. 在虚拟机上安装需要测试的apk软件(下面的测试用例只测试系统settings,不需要安装额外的软件)
  • 引用 adb install <path_to_apk>
    http://developer.android.com/tools/help/adb.html#move
  • 6. 在命令行下运行uiautomatorviewer后弹出uiautomatorviewer窗口,点击Device Screenshot使uiautomatorviewer自动分析页面UI控件
  • 7. 在eclipse中创建java project,导入JUnit3,再导入jar:
  • 引用 {sdkPath}\platforms\android-17\android.jar
    {sdkPath}\platforms\android-17\uiautomator.jar
  • 8. 增加com.knet.knetappTest.LaunchSettings.java
  • package com.knet.knetappTest;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 {        // 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());    }}
  • 9.在项目根目录下增加build.xml,local.properties,project.properties,内容分别是:
  • <?xml version="1.0" encoding="UTF-8"?><project name="uitest" default="build">    <!-- The local.properties file is created and updated by the 'android' tool.         It contains the path to the SDK. It should *NOT* be checked into         Version Control Systems. -->    <property file="local.properties" />    <!-- The ant.properties file can be created by you. It is only edited by the         'android' tool to add properties to it.         This is the place to change some Ant specific build properties.         Here are some properties you may want to change/update:         source.dir             The name of the source directory. Default is 'src'.         out.dir             The name of the output directory. Default is 'bin'.         For other overridable properties, look at the beginning of the rules         files in the SDK, at tools/ant/build.xml         Properties related to the SDK location or the project target should         be updated using the 'android' tool with the 'update' action.         This file is an integral part of the build system for your         application and should be checked into Version Control Systems.         -->    <property file="ant.properties" />    <!-- if sdk.dir was not set from one of the property file, then         get it from the ANDROID_HOME env var.         This must be done before we load project.properties since         the proguard config can use sdk.dir -->    <property environment="env" />    <condition property="sdk.dir" value="${env.ANDROID_HOME}">        <isset property="env.ANDROID_HOME" />    </condition>    <!-- The project.properties file is created and updated by the 'android'         tool, as well as ADT.         This contains project specific properties such as project target, and library         dependencies. Lower level build properties are stored in ant.properties         (or in .classpath for Eclipse projects).         This file is an integral part of the build system for your         application and should be checked into Version Control Systems. -->    <loadproperties srcFile="project.properties" />    <!-- quick check on sdk.dir -->    <fail            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."            unless="sdk.dir"    />    <!--        Import per project custom build rules if present at the root of the project.        This is the place to put custom intermediary targets such as:            -pre-build            -pre-compile            -post-compile (This is typically used for code obfuscation.                           Compiled code location: ${out.classes.absolute.dir}                           If this is not done in place, override ${out.dex.input.absolute.dir})            -post-package            -post-build            -pre-clean    -->    <import file="custom_rules.xml" optional="true" />    <!-- Import the actual build file.         To customize existing targets, there are two options:         - Customize only one target:             - copy/paste the target into this file, *before* the               <import> task.             - customize it to your needs.         - Customize the whole content of build.xml             - copy/paste the content of the rules files (minus the top node)               into this file, replacing the <import> task.             - customize to your needs.         ***********************         ****** IMPORTANT ******         ***********************         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,         in order to avoid having your file be overridden by tools such as "android update project"    -->    <!-- version-tag: VERSION_TAG -->    <import file="${sdk.dir}/tools/ant/uibuild.xml" /></project>

    sdk.dir={sdkPath}

    target=android-17
  • 10. 右击build.xml,run as “ant build”,第一次会失败,提示ant版本过低,至少需要1.8.0,然后下载新版本ant,在eclipse中将ant home指过去,再次运行即可
  • 11. 在项目的bin目录下生成出uitest.jar(uitest可以在build.xml中设置)
  • 12. 在命令行中运行下述代码,将测试jar拷入虚拟机中
  • 引用 adb push {path}/uitest.jar /data/local/tmp/
  • 13. 接着在命令行中运行下述代码,开始测试
  • 引用 adb shell uiautomator runtest uitest.jar -c com.knet.knetappTest.LaunchSettings

    应该出现:
    引用 INSTRUMENTATION_STATUS: current=1
    INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    INSTRUMENTATION_STATUS: class=com.knet.knetappTest.LaunchSettings
    INSTRUMENTATION_STATUS: stream=
    com.knet.knetappTest.LaunchSettings:
    INSTRUMENTATION_STATUS: numtests=1
    INSTRUMENTATION_STATUS: test=testDemo
    INSTRUMENTATION_STATUS_CODE: 1
    INSTRUMENTATION_STATUS: current=1
    INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    INSTRUMENTATION_STATUS: class=com.knet.knetappTest.LaunchSettings
    INSTRUMENTATION_STATUS: stream=.
    INSTRUMENTATION_STATUS: numtests=1
    INSTRUMENTATION_STATUS: test=testDemo
    INSTRUMENTATION_STATUS_CODE: 0
    INSTRUMENTATION_STATUS: stream=
    Test results for WatcherResultPrinter=.
    Time: 40.034

    OK (1 test)


    INSTRUMENTATION_STATUS_CODE: -1
  • 14. 下述网址查看详细资料和测试开发API
  • 引用 http://developer.android.com/tools/help/uiautomator/index.html

    更多相关文章

    1. 利用ant对android项目进行测试,为集成测试提供定制信息
    2. Android(安卓)USB Gadget复合设备驱动(打印机)测试方法
    3. Android应用程序通过JNI控制LED
    4. 使用DDMS测试安卓手机APP的性能(android)
    5. Android上的单元测试
    6. AV-Test公布Android杀软应用测试结果(悲伤)
    7. Android自动化测试工具——Monkey .
    8. Android自动化测试工具——Monkey
    9. android的Instrumentation详解

    随机推荐

    1. android 信息(mms)的故事 (一)
    2. Android(安卓)取得应用程序的启动次数和
    3. Android-电量优化
    4. android展讯平台重要的打包命令及生成镜
    5. 观察者模式在android 上的最佳实践
    6. 支付宝客户端架构解析:Android 容器化框架
    7. 经验总结-Android手机屏幕适配问题
    8. Android 使用Vitamio打造自己的万能播放
    9. Android画图最基本的三个对象(Color,Paint,C
    10. 【android】巧用android:divider属性设置