calabash-androidの導入
Androidの受け入れテストのフレームワークを調べてみるとどうやらBDDでできるものがあるとのこと。
https://github.com/calabash/calabash-android
メリットとしては、
- 受け入れ基準を流行りのCucumber形式で書ける。
- 実機でもテスト可能。Jenkinsとの連携も可能。
- Javaで簡単にデフォルトにないステップを作成できる。
- 頻繁にpull requestが出されている。(2013/3/28現在)
- iOS版もあるので、マルチプラットフォーム開発にも使えそう。
デメリットは、
- リリースビルドされたapkファイルはテストできない。
インストール方法は簡単。以下のコマンドを実行すればインストールされる。
$sudo gem install calabash-android
ただし、以下の準備が必要なので要注意。
$calabash-android version
でcalabashのバージョンが表示されるとインストール完了。
テスト実行も簡単!
Androidプロジェクトのホームディレクトリ(AndroidManifest.xmlがあるディレクトリ)で
$calabash-android gen
と実行するとfeaturesフォルダが自動で作成される。featuresフォルダは以下の構成。
features
|_support
| |_app_installation_hooks.rb
| |_app_life_cycle_hooks.rb
| |_env.rb
|_step_definitions
| |_calabash_steps.rb
|_my_first.feature
あとは自分のテストしたいシナリオをmy_first.featureに書いた後、
$calabash-android run
<apk>
すればテストが実行される。この時にAndroidエミュレータが起動していること、もしくは実機が接続されていなければならない。また、デバッグビルドされたapkファイルしかテストできない。
# 本当なら受け入れテストはリリースビルドされたものに対して実施したいんだが、calabash-androidはどうやらAndroidのユニットテストフレームワークを裏で使っているようなのでそこは我慢。。
<apk>はテスト対象のapkファイルの相対パスとなる。例えばHoge.apkがbinフォルダにある場合、bin/Hoge.apkとなる。
ちなみに、htmlファイルにテスト結果を出力したい場合はオプションを指定する。
$calabash-android run
<apk> --format html --out reports.html
また、Cucumberのオプションもそのまま使用できるみたい。
例えば、タグ指定して特定のシナリオだけ実行したい場合は、
$calabash-android run
<apk> --tags @hoge