Robolectricやってみた。
Androidテスト部 第二回ミーティングで、 Robolectric とかいう謎の物体の存在を教えてもらったのでやってみた。
@thorikawa さんありがたう!
Robolectric って?
http://pivotal.github.com/robolectric/index.html
簡単に言うと、PC上でAndroidの一部UnitTestで実行しちゃう!!ってことらしい。
appengineとかは、UnitTestをサーバとか起動する必要なくても簡単に実行できるので、TDD的な意味で開発サイクルでつっかえるところが少なく、非常に開発しやすいと思います!!
でも、Androidの場合はアプリのビルド、インストール、テストアプリのビルド、インストール、テストの実行、とサイクルを踏むためすんげー時間がかかります。1回テストをするのに、実機使って20秒、エミュレータの起動からやると分単位で時間かかって死ねばいいのに…ってなります。
ところが!ここでRobolectricを使うと、PC上でUnitTestが実行できるので、起動1秒テスト5秒!すてき!抱いて!!ってなります。
でも、あんまり過度な期待はしないほうがいいよ。
やってみる
http://pivotal.github.com/robolectric/eclipse-quick-start.html この通りやる。
- Project Creation
- Create a JAVA project for your tests
- Add required directory structure and jars to test project
- Create a test Run Configuration
- Verify your setup
と、書いてある通り上からやっていきます。
で、この時ダウンロードするjarに罠があって、最初 robolectric-0.9.2.jar を使ってたら、javasisstとかのライブラリが入ってなくてうまく動きませんでした。
robolectric-0.9.2-all.jar ここでこっち、all がついている方をダウンロードしておかないと涙目になります。
やってみたけど…
まだ、テスト1つ書いてみたとかそういうレベルなので、全然間違ってるかも。
間違ってたらごめんね、だけど…。
- Instrumentほげふがみたいなのが無いっぽい気がする?Activityの操作とかは倒せないんじゃないの
- テストの構文がAndroid本来のJUnitと違う記法になるから、普段はEclipseだけで実機もエミュレータもなしでテストして、1日一回、よし、エミュでテストするかー…!みたいなことは出来ない予感がする
- Javadoc眺める限りでは、UI系の部品はShadow(差し替えようパーツ的な何か?)が用意されてるみたいなんですが、CursorとかContentProviderは用意されてないっぽい
- かといってContentProvider使ったテストを試しに書いてみたわけじゃないので誰か確かめてみて!(ぶっぱ
- 自分でShadowもかけるらしい http://pivotal.github.com/robolectric/customizing.html
- ライフサイクルのどこどこまでなんか適当にやってあげちゃうぜー、ってんじゃなくて、全部自分でやらなきゃいけないらしい。onCreate自分で呼ぶとか
あんまし、導入してみよう!!って気持ちにはならない気もする…