最近、The RSpec Bookの布教活動に専念しているパトラッシュです。
おはようございます。
最近はテストの勉強をよくしています。Cucumberを使ってBDDをするというのがいいということがわかってきて、もしこういうのがAndroidでも使えたら面白いんじゃないかなー?と思ってぐぐってみたら、ありました。Calabashというやつです。
calabashは、AndroidとiOSのネイティブアプリのテストをCucumberで書くためのライブラリっぽいです。導入の仕方はgithubを読めということだったので、githubに行きます。
https://github.com/calabash/calabash-android
そこにインストールの仕方とかは書かれてるのですが、プロジェクトへの導入方法がざっくりとしか書いてなくて意味がわからなかったのでとりあえずメモとして残します。
(私の環境はMacOSX Lionです。)
インストール方法は簡単です(但し、Rubyが入ってる事前提)。
Rubyわかんねーよ。という人はrvmでぐぐって頑張れ。
gem install calabash-android
- 最初に、Androidプロジェクトを作っておきます。Hogeプロジェクトとしましょうか。
- Hogeプロジェクトを作ったら、忘れずにテストプロジェクトも作ります。
- ターミナルでHogeプロジェクトのディレクトリに移動します。
- calabash-android setup と打って実行すると、色々と質問されます。順番にいうと、
- パッケージ名を教えなさいよ。AndroidManifestに書いてあるでしょ?それよ!
com.okolabo.android.hoge - で?メインアクティビティはなんなの?
com.okolabo.android.hoge.HogeActivity - アプリへのパスを書きなさいよ!
/User/******/Documents/workspace/hoge/bin/hoge.apk - 一体いくつのバージョンが対象なのよ?
8 - テスト用のkeystoreは?どうせdebug.keystoreなんでしょ?自分で指定したいんならyをdebug.keystoreだったらnを押せばいいんじゃない?私的にはnがお勧めよ!
n - さて、これでセットアップは終わったわ。.calabash_settingを作ったから、いつでも直せるわよ。べ、別にもう一度セットアップスクリプトを実行してもいいんだからね!?
という感じです。
- パッケージ名を教えなさいよ。AndroidManifestに書いてあるでしょ?それよ!
- 次に、Cucumber用のスケルトンファイルを作ります。
calabash-android gen と入力すると、ドゥイーンとfeaturesディレクトリが作られます。 - エミュレータを作成しておきます。対象アプリをインストールしておきます。(Eclipseなら、Hogeプロジェクトの上で右クリックして、Run As -> Android Application)
- あとはcalabash-android run を実行します。自分でbuildするんなら云々みたいなのを聞かれた気がします。calabash-android buildをしておいたほうがいいのかもしれません。
- いきなり、マニフェストにandroid.permission.INTERNETがないよ!と怒られてテストが失敗します。INTERNETのパーミッションがないと、アプリとCucumberを行うサーバ側で通信ができないからテストできんぞ!ということらしいです。hogeプロジェクトのマニフェストに入れましょう。(アプリをリリースするときには外せばいいんかな?そこまで調べてない)
- もう一度、対象アプリをインストールし直し。(Run As -> Android Appication)
- 今度はマニフェストじゃなくて、テストコードによってテストが落ちます。最初に作られるCucumberのサンプルコードが、ログインボタンを押して云々みたいなのだから、当然です。うちのアプリはまだHello World, Hogeしか表示してませんから。
まずはそれに対応させます。featuresディレクトリのmy_first.featureを開きます。 - 超適当に直しました。
Cucumberを使った事ある人はわかるでしょう。
Featureにユーザーストーリーを書きます。
AのためにBがCしたい、なぜなら…みたいなのですが、ここでは省略。アジャイルサムライを読め!
あとはシナリオを書きます。一部コメントアウトしました。ここでの目的は、テストを緑することだったので。Feature: First feature Scenario: As a sample # When I press "Login" Then I see "Hello World, Hoge!"
保存します。
- calabash-android run を実行します。成功するはずです。しなかったら、エミュレータを疑うか、シナリオをタイポってないかを疑えばいいかなと。
以上です。
AndroidやiOSでもCucumberによるBDDができるとなると、ユーザーに理解しやすいテストができてよさそうですねー!!
Pingback: calabash-android setup でセットアップできない時の対処法 | KonifarPod