Macaca 测试 Android 应用:UIAutomator

  • 时间:
  • 浏览:0
  • 来源:万人红黑大战棋牌APP_万人红黑大战棋牌APP官网

有了 socket 连接,就还可不上能 将测试指令发往 UIAutomator 驱动,驱动根据不同的指令参数去执行用 UIAutomator API 写成的 Java 用例。

使用 Macaca 测试 Android 应用

下面是 UIAutomator 框架的类图:

会在工程下生成十个 多 ant 的 build.xml 文件,接着用 ant 对该工程进行编译打包,在工程的 bin 目录下生成 jar 包。

本文简要分析了 Macaca 利用 UIAutomator 的原理,抛砖引玉。只是实际的代码实现都要考虑更多的东西,也更为僵化 ,且这每项也仅仅是 Macaca 的十个 多模块。只是 Macaca 代码都会开源的,真是本文写的过高 全部或有兴趣深入的同学还可不上能 亲自去看看其源码。Macaca 也还有统统过高 ,欢迎随后 人 参与其中,多提意见多支持。^_^

只是用 createUITest 函数来创建十个 多标准的 UIAutomator 测试工程,并生成了 ant build 文件:

还可不上能 看后,最终随后 人 的自动化指令是要通过 UIAutomator 这俩框架来驱动的,怎么才能 才能 用该框架的 API 进行自动化代码编写读者还可不上能 参照网上的各种教程,这里笔者通过 Swipe 操作的实现来简单地介绍 Macaca 是怎么才能 才能 使用该框架 API 的。

其中 UiDevice 是 UIAutomator 框架下的类,且是单例的,通过 getInstance 获取实例后调用 swipe 来模拟设备上的手势滑动。

其中 $version 为安装的 SDK 版本号

只是在该工程根目录下执行命令

在 Macaca 测试用例中用 driver.swipe(startX, startY, endX, endY, duration) 的依据编写滑动用例,下面给出某种滑动的自动化效果范例:

随后 人 来看 build.js 中的逻辑,先通过 checkEv 函数来检测系统环境变量 ANDROID_HOME 有没法配置,肯能都要用到 SDK 目录下的 Android Tools 工具:

这俩工程只是被上图中 scripts 文件夹下的 build.js 创建的。Macaca UIAutomator 驱动的编译过程只是在build.js 中进行的。

uiautomator-client 模块会在本地机器和安卓设备之间建立 socket 连接,只是自动化指令就通过 socket 进行传输。既然是建立 socket ,没法必然有客户端和服务端的 socket 服务建立过程。本机上的 socket 服务建立用 Nodejs 建立并监听即可。对于手机端的 socket 服务建立,随后 人 把 Java 建立 socket 的过程装进 UIAutomator 用例的入口处,如下:

Macaca 主要有十个 多模块来负责操作设备的自动化测试,十个 多是 macaca-adb ,十个 多是 uiautomator-client 。macaca-adb 用 Nodejs 对安卓 adb 命令进行了包装,以供随后 node 模块调用,还可不上能 用其来进行模拟器的启动,端口号映射,获取设备等操作。 uiautomator-client 模块是随后 人 分析的主角。

最后随后 人 的 UIAutomator Java 用例代码便运行起来了。

将上一小节的分析用十个 多图来进行总结,给随后 人 十个 多全局认识

本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/5816962.html,如需转载请自行联系原作者

随后 人 先来看 Java 端一般是怎么才能 才能 跑 UIAutomator 测试用例的。创建十个 多 Java 工程,编写用例类,UIAutomator 的测试入口是十个 多 UIAutomatorTestCase 的子类,范累似 下:

首先将操作指令都用十个 多类表示: Swipe.java ,它实现 execute 依据,通过 socket 收到 json 字符串指令后,解析字符串,根据字符串去调用对应的指令类实例的 execute 依据。范累似 下:

类图出处连接

将生成的 jar 包用 adb push 到安卓设备上,只是执行

在用macaca进行自动化测试,想试一下移动端测试,看后这篇文章,尝试一下。

都要不得劲注意的是,设备端 socket 服务监听的是设备端口,本地电脑端服务监听的本机的端口,要想连通这两端的 socket,都要用 adb 工具进行端口映射,命令如下:

安装了 uiautomator-client ,并成功跑过一次安卓测试用例的同学,还可不上能 在 uiautomator-client 的安装目录下查找 uiautomator-client 文件夹,还可不上能 发现该文件夹下所含了十个 多标准的 UIAutomator 的测试用例工程:

通过该 adb 命令还可不上能 将发往本机 A 端口的数据重定向到安卓设备的 B 端口。

Macaca 对于 native 的自动化测试主要利用了 UIAutomator 。Macaca 是怎么才能 才能 将这俩 Java 写成的工具集成到自身的呢,本文将对此进行分析,让随后 人 更加快乐、明白地使用 Macaca 。

首先介绍下 UIAutomator。UIAutomator 是随 Android SDK 一齐发布的十个 多测试框架,该测试框架提供了一系列 API,利用那此 API 随后 人 还可不上能 编程和安卓 App 进行交互,累似 :打开设置菜单,点击,滑动等。只是还可不上能 对设备进行物理指令操作,如:旋转设备,获取设备分辨率等。该测试框架的 jar 包还可不上能 在 SDK 的安装目录中找到:

只是通过 buildBootstrap 函数来进行 Java 编译,其中用到十个 多 ant 的 npm 包:

只是随后 人 将“ Java 端测试用例编写依据”这俩小节描述的过程用 Nodejs 的代码进行封装,所涉及的 adb 命令由 macaca-adb 模块追到,包括 ant 编译命令也通过 Nodejs 来封装执行,生成十个 多驱动 jar 包,最后将这俩 UIAutomator 驱动模块 push 到安卓设备并启动,以前安卓设备就建立 socket 服务完毕。下面从代码上全部分析一下该过程。

图中,用来写测试用例的常用几块类简介:

用 Macaca 还可不上能 快速、便捷地进行安卓 native 的自动化测试,用简洁的 js 语法,写下用例,只是执行 Macaca CLI 命令,就还可不上能 看后安卓的手机在按照你的指令自动进行用例操作。相关文章可参考:

<img src="http://ww1.sinaimg.cn/large/67ba1336gw1f3dt6wd946j20j40j20vf.jpg" width="3150">