Calabash-Androidには、事前に用意されている「ステップ定義」(canned steps/Predefined steps)(GitHub)があり、基本的にこれらを使用してテストシナリオを作成していくことになります。
一方で、以下のように、事前に用意されている「ステップ定義」だけでは検証が難しい/できない場合もあります。
このような場合、以下で説明するように、「ステップ定義」を自力で作成する必要があります。
前回の『Instrumentation Test Serverとは』でも説明しましたが、Calabash-Androidは、上図の仕組みで動作します。
ここでポイントとなるのは、Calabash-Androidが、「フィーチャー/シナリオ/ステップ」をRubyのプログラムとして扱い(上図左側参照)、これらを「Ruby Client Library」で解釈して、「Instrumentation Test Server」(以下、表記の統一のため、単に「テストサーバー」と表記することとします)を呼び出している点です。
Calabash-AndroidをはじめとするCucumberベースのBDDツールは、下記で構成されます。
ここでは、サンプルプログラム(GitHub)の「{プロジェクトのルート}/features/AddCustomer.feature」をコピーして作成した「PreviewCustomer.feature」を例に、「ステップ定義」の基本的な作り方を説明します。
サンプルプログラムでは、Customer Detail画面からCustomerPreviewActivity画面へ遷移するために、Customer Detail画面にある「button_preview」というメニュー(厳密には「ActionMenuItemView」)をタップする仕様(※注)となっています。
しかし、そのようなメニューをタップする「ステップ定義」は、Calabash-Androidでは用意されていません。そこで、独自の「ステップ定義」を作成します。
今回タップしたい「button_preview」メニューは、「{プロジェクトのルート}/app/src/main/res/menu/menu_customer_detail.xml」に定義されています。具体的には、下記の箇所が該当します。
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/button_preview"
今回は、この機能を、下記として定義することとします。
When go preview
基本的な流れは、以下の通りです。
「AddCustomer.feature」との区別のため、シナリオ名を「Add customer information and preview it by using WebView」に変更し、下記のように当該のステップを追加します。
Scenario: Add customer information and preview it by using WebView Given I press "button_add" When I enter text "ほむら" into field with id "name" And I enter text "homumado@example.com" into field with id "email" And I press "genderFemale" And go preview ←追加
ちなみに、「ステップ定義」ファイルの接尾辞は、「_steps.rb」となります。今回は「{プロジェクトのルート}/features/step_definitions/PreviewCustomer_steps.rb」を作成することとします。
今回の「button_previewメニューをタップする」ステップ定義は、以下のようになります。
When(/^go preview$/) do touch("ActionMenuItemView id:'button_preview'") end
$ calabash-android run app/build/outputs/apk/app-calabash-release.apk (中略) Feature: Preview customer (中略) Scenario: Add customer information and preview it by using WebView # features\PreviewCustomer.feature:9 (中略) And go preview # features/step_definitions/PreviewCustomer_steps.rb:1 1 scenario (1 passed) 5 steps (5 passed) 0m11.134s
Copyright © ITmedia, Inc. All Rights Reserved.