`
42087743
  • 浏览: 235169 次
  • 性别: Icon_minigender_1
  • 来自: 合肥&上海
社区版块
存档分类
最新评论

android平台下UITesting环境配置

阅读更多
  • 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,不需要安装额外的软件)
  • 引用
  • 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
  • 引用
    分享到:
    评论

    相关推荐

      android-testing-templates-master.zip

      2. ** Espresso测试**:Espresso是一款强大的UI测试框架,适用于测试Android应用的用户界面。它可以录制并回放用户的交互行为,验证视图状态和行为。Espresso的使用通常包括三个核心组件:ViewMatcher(匹配视图)、...

      Android-Clean-Testing,android测试示例项目.zip

      项目展示了如何利用AndroidX Test和Robolectric进行集成测试,即使在没有真实设备或模拟器的情况下,也能运行在内存中的Android环境。 4. **组件测试** 组件测试,也称为服务层测试,关注于应用的业务逻辑层。在这...

      Android Application Testing Guide

      作者Diego Torres Milano自Android平台问世之初就已涉足该领域,他在2007年底开始探索和研究Android平台的可能性,尤其专注于用户界面、单元测试和验收测试以及测试驱动开发。由于这本书包含了许多与Android应用测试...

      android_platform_testing

      在Android平台上进行测试是开发过程中不可或缺的一环,它确保了应用程序的质量、稳定性和性能。"android_platform_testing"这个主题涵盖了一系列用于验证和优化Android应用的技术和工具。在Java编程语言的支持下,...

      Android System Testing Environment and Runtime-aster-20111020.rar

      通过模拟不同的Android设备配置,测试人员可以检查应用程序在各种环境下的表现。 3. **设备硬件**: 在实际的测试环境中,测试人员通常会使用真实的Android设备来检测硬件兼容性和性能问题。这些设备可能需要连接...

      Android sdk_platform android 26

      - **Android测试支持库(Testing Support Library)**:提供了JUnit4测试框架、Espresso UI测试工具等,便于开发者进行应用测试。 - **平台二进制文件(Platform Binaries)**:如dalvik虚拟机(或ART)、系统库的...

      Android+application+testing+guide 英文版配套源码

      Robolectric模拟了Android系统运行时环境,使得测试可以在JVM上运行,而无需真实设备。在3500_02_source.zip、3500_03_source.zip等文件中,可能会看到如何使用这两个库来增强测试的灵活性和效率。 5. **UI自动化...

      Android中文版SDK

      10. **Testing Tools**:例如JUnit和Espresso,用于编写和执行单元测试和UI测试,确保应用程序的稳定性和性能。 在使用Android中文版SDK时,开发者通常会通过Android Studio进行项目创建,选择合适的API级别,编写...

      android-testing.zip

      3. **Robolectric**:Robolectric是一个单元测试框架,它可以模拟Android系统运行环境,使得测试可以在JVM上运行,无需真实设备或模拟器。在"RobolectricSample"中,我们可能能看到如何使用Robolectric进行单元测试...

      android-sdk.rar

      7. **Testing Tools**:如JUnit和Espresso,用于编写和运行单元测试和UI测试,确保应用的质量和稳定性。 二、Android SDK的使用流程 1. **安装与更新**:首先,开发者需要通过SDK Manager下载和安装所需的SDK组件...

      android-testing-master.zip_Different_googlesamples

      3. Robolectric:使得单元测试可以在没有Android环境的情况下运行,模拟Android系统行为。 4. AndroidJUnitRunner:结合JUnit,为Android应用提供仪器化测试运行器。 5. Mockito:一个流行的Java模拟库,用于创建和...

      Android_SDK_Windows

      Android SDK for Windows是Android...通过Android SDK,开发者可以在Windows环境下构建各种类型的Android应用,从简单的游戏到复杂的商业解决方案。了解和熟练使用这些工具对于成为一个成功的Android开发者至关重要。

      Android单元测试的小例子

      7. **Robolectric**:对于那些需要在没有实际Android环境的情况下运行的单元测试,Robolectric是一个很好的选择。它模拟了Android系统的大部分功能,使测试可以在Java虚拟机上运行。 8. **Testing Best Practices**...

      高清彩版 Learn Android Studio Build Android Apps Quickly And Effectively

      - 掌握安装和配置 Android Studio 的步骤。 - 了解 Android Studio 的界面组成及其主要功能。 #### 2. Navigating Android Studio - **内容概述**:深入讲解如何在 Android Studio 中导航和操作。 - **学习目标**...

      Android Apps with Eclipse

      这一章为读者提供了关于Android平台架构的基础知识,包括底层硬件抽象层(HAL)、中间层的运行时环境和上层的应用框架。对于初学者而言,了解这些基础知识至关重要,因为它有助于理解应用程序如何与Android系统交互。 ...

      android 离线帮助文档

      18. **测试(Testing)**:Android提供了多种测试框架,如JUnit、Espresso(UI测试)和Robolectric(模拟器测试),用于确保应用的质量和性能。 19. **Android Jetpack**:一组可重用的组件,用于简化开发,包括...

      android-25

      5. **AndroidManifest.xml**: 每个Android平台版本都包含一个示例的AndroidManifest.xml文件,它是每个Android应用必备的配置文件,用于声明应用的组件、权限和其他元数据。 6. **System Images**: 提供模拟器或...

      android网上服装购物系统.rar

      在Android平台上开发应用,通常需要使用Java或Kotlin语言,配合Android Studio集成开发环境(IDE)进行。 【文件名称列表】"android网上服装购物系统"可能包含以下组件和文件: 1. **MainActivity**: 这通常是应用...

      Android test

      Test7可能包含了在多种设备配置下运行的测试用例。 6. 压力测试(Stress Testing): 压力测试检查应用在极端条件下的行为,如大量并发用户、大量数据处理等。这有助于识别和优化性能瓶颈。Test6可能也包含了针对...

    Global site tag (gtag.js) - Google Analytics