

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Android および AWS Device Farm のインストルメンテーション
<a name="test-types-android-instrumentation"></a>

Device Farm では、Android 用のインストルメンテーション (JUnit、Espresso、Robotium、または実装ベースのテスト) のサポートを提供します。

Device Farm には、サンプルの Android アプリケーションと、インストルメンテーション (Espresso) を含む 3 つの Android オートメーションフレームワークでの動作テストへのリンクが用意されています。[Android 用 Device Farm サンプルアプリケーション](https://github.com/awslabs/aws-device-farm-sample-app-for-android)は、GitHub でダウンロードできます。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

**Topics**
+ [インストゥルメンテーションについて](#test-types-android-instrumentation-what-is)
+ [Android インストルメンテーションテストに関する考慮事項](#test-types-android-instrumentation-settings)
+ [スタンダードモードのテスト解析](#test-types-android-standard-mode-test-parse)
+ [Android インストルメンテーションと Device Farm の統合](test-types-android-instrumentation-integrate.md)

## インストゥルメンテーションについて
<a name="test-types-android-instrumentation-what-is"></a>

Android のインストルメンテーションはテストコードでコールバックメソッドを呼び出すことができます。これにより、コンポーネントをデバッグしているかのように、コンポーネントのライフサイクルを段階的に実行できます。詳細については、「[Android 開発者ツール](https://developer.android.com/studio/test/test-in-android-studio#test_types_and_locations)」ドキュメントの「*テストのタイプと場所*」セクション内の「*インストルメント化テスト*」を参照してください。

## Android インストルメンテーションテストに関する考慮事項
<a name="test-types-android-instrumentation-settings"></a>

Android インストルメンテーションを使用する場合は、次の推奨事項と注意事項を考慮してください。

**Android OS の互換性を確認する**  
 [Android ドキュメント](https://developer.android.com/jetpack/androidx/releases/test#orchestrator-1.5.0)をチェックして、インストルメンテーションが Android OS バージョンと互換性があることを確認します。

**コマンドラインからの実行**  
 コマンドラインからインストルメンテーションテストを実行するには、[Android ドキュメント](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#enable-command)に従ってください。

**システムアニメーション**  
 「[Espresso テスト用 Android ドキュメント](https://developer.android.com/training/testing/espresso)」に基づき、実際のデバイスでテストするときはシステムアニメーションをオフにすることをお勧めします。[android.support.test.runner.AndroidJUnitRunner](http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html) インストルメンテーションテスト実行ナーを使用して実行する場合、Device Farm は **Window Animation Scale**、**Transition Animation Scale**、**Animator Duration Scale** の設定を自動的に無効にします。

**テストレコーダー**  
Device Farm は、Robotium などの記録および再生用スクリプティングツールを備えたフレームワークをサポートしています。

## スタンダードモードのテスト解析
<a name="test-types-android-standard-mode-test-parse"></a>

実行の標準モードでは、Device Farm はテストスイートを解析し、実行する固有のテストクラスおよびメソッドを識別します。これは [Dex Test Parser](https://github.com/linkedin/dex-test-parser) というツールを使って行われます。

Android インストルメンテーションの .apk ファイルを入力として指定すると、パーサーは JUnit 3 および JUnit 4 コンベンションに一致するテストの完全修飾メソッド名を返します。

これをローカル環境でテストするには: 

1. [https://github.com/linkedin/dex-test-parser](https://github.com/linkedin/dex-test-parser) バイナリーをダウンロードします。

1. 次のコマンドを実行して、Device Farm で実行されるテストメソッドのリストを取得します:

   ```
   java -jar parser.jar path/to/apk path/for/output
   ```

# Android インストルメンテーションと Device Farm の統合
<a name="test-types-android-instrumentation-integrate"></a>

**注記**  
Android インストルメンテーションテストを AWS Device Farm と統合するには、次の手順に従います。Device Farm でのインストルメンテーションテストの使用に関する詳細については、「[Android および AWS Device Farm のインストルメンテーション](test-types-android-instrumentation.md)」を参照してください。

## Android インストルメンテーションテストをアップロードする
<a name="test-types-android-instrumentation-upload"></a>

Device Farm コンソールを使用してテストをアップロードします。

1. [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) で Device Farm コンソールにサインインします。

1. Device Farm ナビゲーションパネルで、**[モバイルデバイスのテスト]** を選択して、**[プロジェクト]** を選択します。

1. プロジェクトのリストで、テストをアップロードするプロジェクトを選択します。
**ヒント**  
検索バーで名前によりプロジェクトリストを絞り込めます。  
プロジェクトを作成するには、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の手順に従ってください。

1. **[ルールを作成]** を選択します。

1. **[アプリを選択]** の **[アプリの選択オプション]** セクションで、**[アプリをアップロード]** を選択します。

1. Android アプリケーションファイルを参照して選択します。このファイルは、.apk ファイルである必要があります。

1. **[テスト設定]** ページの **[テストフレームワークを選択]** セクションにある **[インストルメンテーション]** を選択し、次に **[ファイルを選択]** を選びます。

1. テストが含まれている .apk ファイルを参照して選択します。

1. 残りの手順を完了し、デバイスを選択して実行を開始します。

## (オプション) Android インストルメンテーションテストでのスクリーンショットの撮影
<a name="test-types-android-instrumentation-screenshots"></a>

Android インストゥルメンテーションインストゥルメンテーションテストの一部としてスクリーンショットを撮ることができます。

スクリーンショットを撮るには、次のいずれかのメソッドを呼び出します:
+ Robotium の場合は、`takeScreenShot` メソッドを呼び出します (例: `solo.takeScreenShot();`)。
+ Spoon の場合は、次のような `screenshot` メソッドを呼び出します:

  ```
  Spoon.screenshot(activity, "initial_state");
  /* Normal test code... */
  Spoon.screenshot(activity, "after_login");
  ```

テスト実行中、Device Farm は、デバイス上の次の場所 (存在する場合) からスクリーンショットを撮影し、テストレポートに追加します:
+ `/sdcard/robotium-screenshots`
+ `/sdcard/test-screenshots`
+ `/sdcard/Download/spoon-screenshots/test-class-name/test-method-name`
+ `/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name`