美文网首页Android Testing安卓开发杂记程序员
使用 IntelliJ IDEA 创建 Android UiAu

使用 IntelliJ IDEA 创建 Android UiAu

作者: lovexiaov | 来源:发表于2016-01-16 18:11 被阅读2286次

    UPDATE: 做了个模板,放在了 GitHub 上,有需要请自取。
    UPDATE2: 又做了一个 Gradle 版的模板:UITest1.0

    UiAutomator 是 Android 官方提供的一个功能非常强大的测试框架,利用该框架可以非常方便的测试应用的稳定性。官方也有详细的教程指导我们使用 Eclipse 创建 UiAutomator 测试工程的说明。

    然而,随着 Android 推出新一代的开发 IDE——Android Studio,笔者也渐渐喜欢上了 JetBrains 家的产品,于是决定将 UiAutomator 测试工程搬到 IntelliJ IDEA 上来。下面我们将简单讲解一下使用 IDEA 创建 UiAutomator 测试工程的步骤。

    说明:本文基于 Mac 环境讲解,在 Windows 和 Linux 环境上可能稍有不同,请知晓。

    0x00 打开 IDEA 并选择 “ Create New Project”

    创建新工程

    0x01 依次选择 “Android”--> “Empty Module”,然后点击 “Next”

    选择工程类型

    0x02 配置项目信息(项目名,路径等),然后点击“Finish”

    配置项目信息

    0x03 添加测试依赖库

    点击界面右上角的图标,如下图所示,也可以通过点击 “File”-->“Project Structure...”完成此操作


    打开项目结构配置界面

    依次选择“Libraries”-->“+”-->“Java”


    添加依赖库

    在文件选择窗口中选择 [你的 Android sdk 目录 ]/platforms/android-xx 文件夹下的 android.jaruiautomotor.jar,然后点击“OK”

    选择依赖库

    在弹出的“Choose Modules” 窗口中选择我们刚创建的工程,这里为 UiAutoTest,点击“OK”

    Choose Modules

    如果一切正常的话,你会看到如下界面,点击“OK”完成依赖库配置


    完成依赖库配置

    0x04 添加 build.xml 文件

    由于 UiAutomator 工程使用 Ant 构建,所以还需要在工程中添加用于 Ant 构建的 build.xml 文件,这里直接拷贝了之前工程中的 build.xml 文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="Test" 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>
    

    有自定义需求的同学请自觉研究一下 Ant 工具的使用,这里不赘述。

    0x05 添加 project.properties 文件

    接下来我们需要在工程根目录添加 project.properties 文件,并指定待测设备的 Android 版本,添加以下行:

    target=android-20
    

    至此,我们已经成功的创建了 UiAutomator 工程,下面让我们编写一个名为 BaseUiTest 的测试检验工程是否能成功编译:

    package com.lovexiaov.uiautotest;
    
    import com.android.uiautomator.core.UiDevice;
    import com.android.uiautomator.testrunner.UiAutomatorTestCase;
    
    
    public class BaseUiTest extends UiAutomatorTestCase {
    
        public void testEnvIsOk() {
            UiDevice.getInstance().pressHome();
        }
    }
    

    命令行执行 ant build 或在 IDEA 主窗口点击三角按钮构建,如下图:

    构建工程

    如果在构建过程中没有出错,你应该会看到如下图中所示的bin目录及其中的 UiAutoTest.jar 文件。

    执行结果

    怎么样,很简单吧?赶快体验一下吧!

    相关文章

      网友评论

      • qhy_smile:为什么我在执行的时候,一直提示java.lang.RuntimeException: Stub!:cold_sweat:
        lovexiaov:提供的信息太少,無法判斷~
      • 5ea4beb37efa:您好我是小米工程师 我最近也研究这个 方便加下微信交流吗 shaoxy1992 备注写下简书 嘿嘿方便备注
      • c294d025b87b:ant xml文件和project.properties都不需要自己创建。。。
        lovexiaov: @SeganW 怎么弄的
      • Surakey:卡在了最后一步,ant编译之后没有生成bin文件夹和对应的jar包
        lovexiaov:@9e909e65d482 你把jar文件放在哪里了
        Surakey:@lovexiaov 现在已经可以正确执行了,不过又一个问题,就是如果我想添加一个第三方的jar包,比如mail.jar,ant打包就会提示找不到jar包,怎么在build.xml中配置呢
        lovexiaov:@9e909e65d482 编译成功了吗?
      • da12efbf17f6:为啥不直接用androidstudio?
        lovexiaov:@巻心菜 你链接中的这个 UIAutomator 2.0 跟我说的不是一个东西,2.0 属于 Android Testing Support Library,而我使用的(按这么说来应该是 1.0)是以单独的 Jar 文件存在于 %android_sdk%/platforms/android-xx/uiautomator.jar
        da12efbf17f6:@lovexiaov 是不是可以参考一下这个: http://stackoverflow.com/questions/29238125/ui-automator-2-0-project-in-android-studio 我也没试过
        lovexiaov:@巻心菜 因为不知道如何使用 Android Studio 创建 Java 工程。

      本文标题:使用 IntelliJ IDEA 创建 Android UiAu

      本文链接:https://www.haomeiwen.com/subject/haghkttx.html