NativeDriver連携のチュートリアル
概要
テスト自動化ツールであるNativeDrvierをRemote TestKit経由でもご利用いただけます。
NativeDriverとは、Androidのネイティブアプリケーションにより最適化されたテストフレームワークです。
このフレームワークとRemote TestKitを組み合わせることで、様々な端末でネイティブアプリケーションの自動テストを行うことができます。
※また、本記事ではNativeDriverのチェックアウト・ビルドに必要な環境やeclipse等の導入・設定方法については割愛します。
NativeDriverのダウンロードとビルド
まずはNativeDriverのソースをダウンロードします。GoogleCodeにあるGettingStartedAndroidからNativeDriverをチェックアウトします。(※途中、iphone用のソースチェックアウト時にユーザ名とパスワードを聞いてきますが、何も入力せずエンターを押下してください)
svn checkout http://nativedriver.googlecode.com/svn/trunk nativedriver
チェックアウトしてきたソースディレクトリに移動して、ビルドします。ビルドはantコマンドで行います。
cd nativedriver/android
ant
ビルドが成功すると、buildディレクトリ配下のようなファイル・ディレクトリが生成されているはずです。
$ cd build/
$ ls -la
合計 32816
drwxr-xr-x+ 1 testuser なし 0 7月 25 20:23 .
drwxr-xr-x+ 1 testuser なし 0 7月 25 20:23 ..
-rwxr-xr-x 1 testuser なし 15518 7月 25 20:23 client.jar
-rwxr-xr-x 1 testuser なし 14267411 7月 25 20:23 client-prejarjar.jar
-rwxr-xr-x 1 testuser なし 1764901 7月 25 20:23 client-standalone.jar
-rwxr-xr-x 1 testuser なし 7660 7月 25 20:23 common.jar
-rwxr-xr-x 1 testuser なし 76742 7月 25 20:23 server.jar
-rwxr-xr-x 1 testuser なし 15047644 7月 25 20:23 server-prejarjar.jar
-rwxr-xr-x 1 testuser なし 2407619 7月 25 20:23 server-standalone.jar
NativeDriverサンプルのインポート
チェックアウトしてきたNativeDriverのソースにはテストのサンプルコードとテストコードが同梱されていますので、こちらを使ってRemote TestKitの連携を試します。
インポートの大まかな流れは以下のようになります。
- Eclipseを起動
- Eclipseのメニューから "File" -> "Import" をクリック
- "General" -> "Existing Projects into Workspace" を選択して [Next] ボタンをクリック
- [Browse]ボタンをクリックして "nativedriver/android" ディレクトリ を指定
- "Projects" に "android-test" と "simplelayouts" が追加されたことを確認して [Finish] ボタンをクリック
インポートが完了すると、Package Explorerには以下のように表示されるはずです。
サンプルへNativeDriverの組み込み
サンプルのアプリケーション、およびテストにNativeDriverを組み込みます。
サンプルアプリケーション「simplelayouts」のプロジェクトを右クリックしてプロパティを開き、左メニューから「Java Build Path」をクリックし、「Android 2.3.3(※)」,「server-standalone.jar」にチェックを入れて [OK] をクリックします。
(※)サンプルアプリケーション「simplelayouts」はAndroid SDKのバージョンがGettingStartedAndroidドキュメントの中で2.2 or laterと指定されているので、あらかじめAndroid SDK Managerから2.3.3用のパッケージをインストールしておいてください。
プロジェクトのビルドターゲットを2.3.3にしておきます。
Java Build Pathを選択し、「Andorid2.3.3」と「server-standalone.jar」にチェックを入れて保存します。
サンプルテスト「android-test」のプロジェクトを右クリックしてプロパティを開き、左メニューから「Java Build Path」をクリックし、「client-standalone.jar」と「JUnit3」にチェックを入れて [OK] をクリックします。
Remote TestKitで端末をレンタル・設定
前述の通り、サンプルアプリケーション「simplelayouts」のBuild Targetを2.3.3と指定したので、Remote TestKitでも2.3.3の端末をレンタル・起動してから「端末の操作」を参考に、端末ウィンドウより[設定 - 仮想adb有効化]を有効化します。
コマンドラインツールを起動し、以下のコマンドを入力して接続している端末のデバイスIDを取得します。
adb devices
デバイスIDは以下のように返ってきます。下記の場合、デバイスIDは「optimusbrightl-07c.appkitbox.com:52439」になります。
adb devices List of devices attached optimus_bright_l-07c.appkitbox.com:52439 device
次にポートフォワードを行うため、以下のコマンドを入力します。
adb -s [deviceID] forward tcp:54129 tcp:54129
アプリケーションのビルドとインストール
サンプルアプリケーション「simplelayouts」を右クリックして "Run as" -> "Android Application" を選択するとビルドおよびインストールが開始されます。
※もし、インストールがtimeoutで失敗した場合はeclipseのメニューから[Window] -> [Preferences]を選択するとPreferencesダイアログが表示されるので、メニューの "Android" から "DDMS" を選択し、ADB connection timeout値を大きく(例:10000)して再度試してみて下さい。
Remote TestKitでレンタルした端末にアプリケーションがインストールされたことを確認したら、次のコマンドを実行しinstrumentationを有効にしてアプリを再起動します。
adb shell am instrument com.google.android.testing.nativedriver.simplelayouts/
com.google.android.testing.nativedriver.server.ServerInstrumentation
eclipseのlogcatに "Jetty started on port 54129" とメッセージが出ていれば準備完了です。
テスト実行
サンプルテスト「android-test」を右クリックして "Run as" -> "JUnit Test" を選択するとテストが開始されます。
※本情報は掲載時点の情報となります