前面说了一下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


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