Androidの実機テストを簡単にするSpoonを使ってみました。
まだ日本では認知度はそれ程高くないですが、良いOSSだと思います。
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
こんな感じになっていると思います。
色々弄って確認してみましょう。
エラーについて
自分がはまったエラーについて紹介したいと思います。
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される時には、何やら申請をしなければならないようですね。
次は実際のプロジェクトに使ってみたいです。