テストの自動化メモ。
Android上でのActivityTestの基本。Javaのinstrumentと同様、仮想マシンとクラスの間にインターセプト出来る。
android.testパッケージ以下にinstrumentを使ってUIを操作「したことに」して各種Testを実行可能なクラスが用意されている。
PowerMockを開発しているJaywayが、その有り余るHENTAI性をAndroidのUIテストの自動化に注ぎ込んだのがRobotium。
"Android開発におけるSelenium"を目指しており、UI部品の内容に対するexpectationを記述や複数Activityにまたがるテストを簡単に記述できる。
個人的には、あのJaywayがメイン開発に携わっていることから将来性も高いと感じる。
Robotiumによる自動化テストで、画面のキャプチャなどもまとめて取得できるよう、特にチーム開発での運用面をサポートするツールとしてsciroccoが公開されている。
こちらは日本にあるSONIXという会社が開発している。
デバッグ機能を使ってUIを操作する・・・らしい。
ただしタップイベントなどを x, y の座標値で指定する必要が有るため、実用は難しいかもしれない。
ちなみに、InstrumentationとRobotiumは2011-06時点では「再生」だけで「記録」機能が無い。
一方、monkeyrunnerにはドキュメント化はされていないが MonkeyRunner Recorder という機能が隠されている。
これを使うとRecorderを一種のUI操作Proxyとして、あとでmonkeyrunnerで実行出来る形式のpythonスクリプトでUI操作を保存できる。
ただしmonkeyrunnerでは操作した結果を取得する機能が画面snapshotの取得しか使えない。プログラムで画面UIの変化を検出する機能が存在しない。
この点が、UIテストの自動化に組み込むにあたりデメリットになるだろう。