在前面已经简单的介绍了 calabash-ios 的原理,这里将继续分析 calabash-Android 端的原理
calabash-android 架构其实与 IOS 是相同的,
1、内部使用核心为 cucumber 的 calabash 的脚本在运行测试的时候会在虚拟机/真机上预装一个 web 服务器,这个 web 服务器就是解释 calabash 的脚本,
2、因为 calabash-Android 是基于 robotium 框架的,所以在机器上预装的 web-server 会将下发下来的 calabash 脚本解释为 robotium 的脚本,然后向测试 app 发送 robotium 的脚本,
3、因为 robotium 框架就是封装的 google 测试框架 instumentation,所以 app 拿到 robotium 脚本后,将其解释为 instumentation 命令向被测试的 app 发送这些命令,被测试的 app 执行这些命令,然后将结果返回。
calabash-Android 整个框架采用 C/S 的运行模式,系统架构如下图所示:
框架图解释如下:
1、Runner 负责接受用户指令,并对其进行数据校验、指令转换等操作,之后将其交由客户端处理(这里的客户端是指运行在 pc 上的用户自己编写的代码),
2、instrumentation test server 就是预装在设备上的 web-server,客户端在接收到指令之后,将指令发送给它,请求其执行对应操作,
3、web-server 在接收到指令之后,解释该命令并与 app 进行交互,
4、所有执行结果最终会被收集到 Results 中。