概要
Robotiumとは、Android用UI操作テスティングフレームワークです。
Robotiumを使用したテストケースは、以下のAndroid SDKから提供されているテストクラスを継承したクラスに記述します。
・ActivityInstrumentationTestCase2
・ActivityUnitTestCase
・SingleLaunchActivityTestCase
各クラスの特徴について、簡単に説明します。
ActivityInstrumentationTestCase2
複数のアクティビティに跨がる試験を想定したテストクラスです。
結合試験や総合試験等でのシナリオを組んだ試験に適しています。
他のテストクラスに関しても同様ですが、このクラスのテストケースはUIスレッドで実行されないため、UIへの操作はActivity#runOnUiThread()を使用し処理しなければいけません。
ActivityUnitTestCase
アクティビティ単体のテストを行うためのテストクラスです。
コンテキストやアプリケーションのモックを差し込むことができます。このテストクラスを継承したクラスでは別のアクティビティを開始することはできません。
ActivityInstrumentationTestCase2クラスでは、getActivityメソッドを呼び出すと、テスト対象のアクティビティのライフサイクル(onCreate()〜onResume())が開始されますが、このクラスでは、getActivityを呼び出しても、アクティビティのonCreate()しか呼び出されなく、onStart()や、onResume()等のイベントに関しては、テストケース内で呼び出さなければいけません。
これにより、アクティビティの各ライフサイクルを自在に実現できるため、ライフサイクルに応じたアクティビティの状態を試験するのに適しています。
SingleLaunchActivityTestCase
単一アクティビティの試験を行うためのテストクラスです。
単一アクティビティの試験を行う試験に適しています。
尚、Robotiumでは、ベースとなるJUnitは3.8です。
特徴
複数のアクティビティに跨がるシナリオテストに適しています。
ボタン押下やテキスト入力をテストコードから簡易に呼び出すことができます。waitForXXXメソッド等の処理待ちメソッドが多数用意されているため、非同期処理がある場合の処理待ちも簡易にできます。
難点
IDを割り振っていない、表示テキストがない等の操作対象の特定が難しいViewが多数存在する場合、操作対象のViewがActivity内の何番目に存在するかを指定しなければいけません。Viewの増減がない場合は特に問題はありませんが、View数が非常に多い、または、Viewが動的に増減する場合、View指定方法にロジックが必要になり、テストコードが複雑になってしまいます。
特に理由がなく、Robotiumを利用する前提の場合は、ViewにIDを割り振っておく方が無難です。
Robotium公式サイト
Robotium公式サイトはこちらです。
ダウンロード
サイト左のFeautured>Downloads>robotium-solo-5.0.1.jarのリンクをクリックします。
(2014/3/2時点最新版)
次回は、Robotium導入方法、テストプロジェクトの作成について説明します。