前面说了一下 Calabash-Android 的安装和基本使用,这一节说一下用例执行流程

  1. Features —— 这里的 feature 就是 cucumber 的 feature,用来描述 user stories 。

  2. Step Definitions —— Calabash Android 事先已经定义了一些通用的 step。你可以根据自己的需求,定义更加复杂的步骤。

  3. Your app —— 测试之前,你不必对你的应用修改。(这里其实是有问题,后面我们会说到。)

  4. Instrumentation Test Server —— 这是一个应用,在运行测试的时候会被安装到设备中去。 这个应用是基于 Android SDK 里的 ActivityInstrumentationTestCase2。它是 Calabash Android 框架的一部分。Robotium 就集成在这个应用里。

    总结:PC 端使用了 cucumber 框架,通过 http 和 json 与模拟器和真机上安装的测试 apk 通信,测试 apk 调用 Robotium 的方法来进行 UI 自动化测试,支持 webview 操作。

一、Features

既然 Calabash Android 使用的是 Cucumber 框架,Features 文件自然可以被 Cucumber 解释并执行,像前面一节说的 my_first.feature 文件
关于 Cucumber 的语法介绍,下面一篇文章可以帮助快速的理解入门,这里就不多写了
Cucumber 入门之 Gherkin

二、预定义 steps

feature 文件里面的 step 是在哪里定义的呢,进入到 ruby 安装目录 (根据自己安装目录查找) C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\calabash-android-0.5.12\lib\calabash-android\steps

可以看到,这个目录下有很多 ***_steps.rb 的文件,这些就是 Calabash Android 预定义的 step 文件,里面包含了点击、滑动、输入、截图等操作步骤,详情可参考官方文档:https://github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/canned_steps.md

三、自定义 steps

1.通过上面的内容,了解了用例的编写方法,下面实现一个微信登录的功能,修改 my_first.feature

2.下面在 E:\Android_Test\features\step_definitions 目录,定义一个 login_steps.rb 文件,内容如下

Then /^I enter "([^\"]*)" and "([^\"]*)"$/ do |username, password|
  enter_text("android.widget.EditText index:0", username)
  enter_text("android.widget.EditText index:1", password)
end

3.在 my_first.feature 中修改内容如下

运行 E:\Android_Test>calabash-android run weixin622android580.apk,可以看到两个用例的运行效果相同,关于 Calabash Android 的一些 Ruby api 可以参考文档https://github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md


↙↙↙阅读原文可查看相关链接,并与作者交流