Androidの実機テストを簡単にする「Spoon」を使ってみた-Sample編-

Androidの実機テストを簡単にするSpoonを使ってみました。
まだ日本では認知度はそれ程高くないですが、良いOSSだと思います。

f:id:henteko07:20130324055146p:plain

Spoonとは

Spoonとは、Squareが開発しているOSSで、Androidの実機テストの自動化ツールです。
githubソースコードが公開されています。
このツールを使うと、Androidの実機でのテストが自動化され、ちまちま指で確認しなくてもよくなります。
monkeyrunnerと被る所は結構あるかと思いますが、このSpoonはテストの結果を見やすいように自動でまとめてhtmlを吐いてくれます。
あとはテストの書き方(javaで書ける)などが違うと思います。
そこら辺まだ詳しく調べきれていないので、使い続けていきたいです。

とりあえず動かしてみる

何はともあれ、とりあえず動かしてみましょう。
動かなければどんな魅力的なプロダクトでも意味無いですよね。

下準備

今回は、githubで公開されているものをcloneしてきて、その中に入っているspoon-sampleを弄ってみたいと思います。

$ git clone git://github.com/square/spoon.git
$ cd spoon/spoon-sample

spoon-sampleの中には以下の3つのディレクトリ及びファイルが入っていると思います。

  • app/
  • pom.xml
  • tests/

mavenのセットアップ

上のpom.xmlというのから分かる通り、このSpoonはmavenを使用します(必須ではない模様)。
なので、まず使ってるPCに入ってるmavenのバージョンを確認しましょう。

$ mvn -v

ここで、自分の環境(MBA OSX 10.7.5)では、mvnのバージョンが3.0.3でした。
とりあえず現時点での最新バージョン(3.0.5)にアップデートしておきましょう。
ここら辺の記事を参考に、アップデートする。

$ brew install maven
$ vim ~/.zshrc

.zshrcに以下を追記

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home/

これでmavenのアップデートは完了です。

$ mvn -v

で最新バージョンがインストールされているか確認しましょう。

Android側の準備

テストを実行する前に、テストする端末を用意しなければいけません。
今回自分はエミュレータを起動してテストしましたが、実機でも同じだと思います。
普通にいつも通りUSBケーブルを刺して、いつもの実機デバックが出来る環境にしておきましょう。

また、注意点としてAPIレベルが16以上(Android4.1以上)じゃないと対応していないようです。
APIレベル16以上の物を用意しましょう。

テストの実行

今回の最終目標は、テストの実行をしてテスト結果を見るなので、tests/に入りテストの実行をします。

$ cd tests/
$ mvn spoon:run

これでテストが実行されます。

エラーが出た場合は、参考になるかもしれませんので、この記事のエラーについてを参照してください。

テスト結果

さて、テストが無事実行出来た場合、エミュレータ(実機の場合は実機)が自動で動き出すと思います。
それを面白おかしく観察しながら見守った後、テスト結果がtests/target/spoon-open/に出力されます。
結果はhtml形式でまとめられているので、ブラウザで開きましょう。

$ cd target/spoon-open/
$ open index.html

こんな感じになっていると思います。

f:id:henteko07:20130324053323p:plain

f:id:henteko07:20130324053412p:plain

f:id:henteko07:20130324053418p:plain

色々弄って確認してみましょう。

エラーについて

自分がはまったエラーについて紹介したいと思います。

Failed to execute goal com.squareup.spoon:spoon-maven-plugin:1.0.3-SNAPSHOT:run

[ERROR] Failed to execute goal com.squareup.spoon:spoon-maven-plugin:1.0.3-SNAPSHOT:run (default-cli) on project spoon-sample-tests: Execution default-cli of goal com.squareup.spoon:spoon-maven-plugin:1.0.3-SNAPSHOT:run failed. NullPointerException -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

エラー内容からではわかりませんが、自分の環境では環境変数ANDROID_HOMEが設定されていなかった為でていたエラーのようです。
android sdkのpathを設定しましょう。

$ vim .zshrc

以下を.zshrcに追記(個人の環境によってpathが違います)。

export ANDROID_HOME=~/android-sdks/

最後に

Spoon超coolですね。
気に入らない所あったらgithubでpull reqしましょう。
commitしてmergeされる時には、何やら申請をしなければならないようですね。

次は実際のプロジェクトに使ってみたいです。