注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

基于Orange的安卓UI自动化学习笔记(三)  

来自隋相   2016-06-16 15:57:52|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
上一篇主要介绍了命令行执行UI自动化测试用例,在上一节中我们已经可以实现通过本地命令行java -jar orange-XXX.jar config.properties的方式实现apk重签名、UI自动化工程打包、真机上安装、解析测试用例xml配置文件、执行测试用例等一系列步骤。但是前提是本地已经手动执行过一次测试工程,也就是在bin目录下要已经生成YourProjectName.apk文件后才能执行java -jar本地脚本命令。如何才能把UI自动化测试工程打包成apk的过程也统一起来呢?可以用ant构建工具!
关于安卓UI自动化学习,我的学习路线是这样安排的:
(一)本地:能够独立完成一个UI自动化工程的建立
(二)本地:命令行执行UI自动化测试用例
(三)本地:ant打包测试工程apk+执行UI自动化用例一体化
(四)jenkins:持续集成平台成功构建UI自动化工程
(五)jenkins:真机换成模拟器
(六)jenkins:持续集成平台实现被测apk自动打包编译+自动化一体化
本章内容就是第三部分,本地:ant打包测试工程apk+执行UI自动化用例一体化

一、ant打包安卓工程原理介绍

ant打包安卓工程的主要步骤如下:

  1. android update project -p .
    该过程主要是在目录下生成ant编译需要的文件build.xml。
    执行完这条指令后,我们在目录下发现多了build.xml和local.properties两个文件,这两个文件都是自动生成的,前者是编译需要的文件,其中的内容很简单,主要是做了一些xml配置文件的路径指定,最关键的就是指定了sdk下的build.xml文件路径。后者则主要是指定了本机的sdk所在路径。(sdk下的build.xml是android自带的安卓工程ant打包用的配置文件)

2.添加对签名的支持,新增文件ant.properties,加入签名信息。
key.store=xxx.keystore
key.alias=xxx
key.store.password=xxx
key.alias.password=xxx

3.执行ant release命令,即可在bin目录生成xxx-release.apk的安装包。

是不是超简单?但是简单的前提是安卓官方的sdk自带的build.xml中集成好了了复杂的打包过程,包括各个target的目标和不同Target之间的依赖关系。有兴趣的可以找出来这个build.xml研究下内部具体的安卓打包过程。
同时ant release可能出现的问题是:

基于Orange的安卓UI自动化学习笔记(三) - 网易杭州QA - 网易杭州 QA Team

 出现这种问题的解决办法是可以执行ant clean release或者在本地eclipse上对工程做一下clean处理就OK了。

另一个问题有可能出现:
基于Orange的安卓UI自动化学习笔记(三) - 网易杭州QA - 网易杭州 QA Team
这种问题通常是由于java执行路径中没有需要的jar包造成的。ant会默认将libs目录下的jar包都放入class path中,但是如果我们在建立工程的时候没有生成libs目录,build path中的jar包都是来源于第三方的jar包。这种情况下,我们可以通过新增custom_rules.xml文件来解决该问题。
基于Orange的安卓UI自动化学习笔记(三) - 网易杭州QA - 网易杭州 QA Team

二、ant打包工程+UI自动化执行一体化

在原理了解的基础上,我们可以写自动化脚本了,到时候直接使用ant命令进行执行就可以。我们注意到ant release打包生成的apk的名字是XXX-release.apk,而我们在上节的orange配置config.properties中指定的apk名字就要随之改一下哦。改好之后现在需要准备的是ant执行脚本my_work.xml。

<?xml version="1.0" encoding="utf-8"?>
 <project
  name="execute Orange on my computer"
  basedir="."
  default="execute_Orange" >
       <fileset dir="D:.m2/repository" >
        <include name="orange-0.6.2.jar" />
        <include name="robotium/robotium-solo-5.2.1.jar" />
        <include name="junit/junit/3.8.1/junit-3.8.1.jar" />
    </fileset>
</path>
<property name="configFile"  value="config_linux.properties" />

<!-- 产生ant release需要的文件 -->
<target
    name="update_project">

    <exec
        executable="cmd"
        failonerror="true" >

        <arg line="/c android project -n PrisAndroidUITest -p ." />
    </exec>
</target>

<!-- 使用ant编译测试程序为一个apk文件 -->
<target
    name="ant_release"
    depends="update_project" >

    <exec
        executable="cmd"
        failonerror="true" >

        <arg line="/c ant clean release" />
    </exec>
</target>

<!-- 执行Orange.jar -->
<target
    name="execute_Orange"
    depends="ant_release" >

    <exec
        executable="cmd"
        failonerror="true" >

        <arg line="/c java -jar D:.m2/repository/orange-0.6.2.jar ${configFile} " />
    </exec>
</target></project>
添加好ant执行脚本my_work.xml脚本后,在命令行里执行ant -f my_work.xml就可以等待UI自动化用例执行结果啦。
至此为止,我们已经可以用ant命令实现测试工程打包+UI自动化测试用例执行的一体化过程。想想ant命令还要自己手工输入执行呢,而现在既然命令都确定下来了,且用例写好了,那我们不如尝试让持续集成工具jenkins帮我们完成每天定时的自动编译打包、执行测试用例吧!

 
 
  评论这张
 
阅读(126)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016