まず、developer.android.com にあるアプリをテストするをご覧ください。プラットフォーム テストにおけるインストルメンテーション テストは、いくつかの点で使い方が異なります。
インストルメンテーション テストは、am instrument コマンドによって起動される特別なテスト実行環境です。この環境でターゲット アプリケーション プロセスが再起動され、基本アプリケーション コンテキストで初期化されて、アプリケーション プロセス VM 内でインストルメンテーション スレッドが起動されます。テストコードはこのインストルメンテーション スレッドで実行が開始され、Instrumentation インスタンスが付属しています。このインスタンスは、アプリケーション コンテキストへのアクセスを可能にし、テスト中のアプリケーション プロセスを操作する API を提供します。
主な概念
- アプリケーション パッケージでインストルメンテーションを宣言する必要があります。このとき、アプリケーション パッケージ マニフェストの <manifest>タグ下に<instrumentation>タグをネストします。
- 技術的にはアプリケーション パッケージ マニフェストに複数の <instrumentation>タグを含めることも可能ですが、一般的な方法ではありません。
- 各 <instrumentation>には、次のものが含まれている必要があります。- android:name属性: テスト アプリケーションに含まれる- Instrumentationのサブクラスの名前です。通常は使用中のテストランナーです(例:- android.support.test.runner.AndroidJUnitRunner)。
- android:targetPackage属性: テスト対象のアプリケーション パッケージです。定義する必要があります。
 
ステップの概要
- 一般的にフレームワーク サービスに対する目的の密閉型テストは次のとおりです。 - frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests- コンポーネントに新しいインストゥルメンテーション モジュールを追加する場合、以下をご覧ください。 
- 上記のいずれかの場所にテストを追加する場合、既存の規則に従います。新しいテスト モジュールを設定する場合は、上記のいずれかの場所にある - AndroidManifest.xmlと- Android.mkのセットアップに従います。
- frameworks/base/core/tests/coretests/ の例をご覧ください。 以下の行により、追加のアプリがインストールされますので、ご注意ください。 - <option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
- 必ず、 - @SmallTest、- @MediumTest、- @LargeTestのいずれかとしてテストをマークしてください。
- テスト モジュールを m でビルドします。例: - m FrameworksCoreTests
- テストを実施します。 - 最も簡単な方法は、次のように Atest を使用することです。 - atest FrameworksCoreTests
- より複雑なテストの場合、Trade Federation テストハーネスを使用します。 
 - m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
- Tradefed を使用しない場合、テストを手動でインストールして実行します。 - 生成された apk をインストールします。
 - adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk- さまざまなオプションを指定してテストを実行します。 - apk 内のすべてのテスト - adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- 特定の Java パッケージ下のすべてのテスト - adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- 特定のクラス下のすべてのテスト - adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- 特定のテスト方法 - adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
 
 
テストでは、JUnit API を使用して、合格または不合格に関する明示的なアサーションを作成できます。また、例外がキャッチされない場合も、機能的な失敗が発生します。
パフォーマンス指標を出力するには、テストコードで Instrumentation#sendStatus を呼び出して Key-Value ペアのリストを送信します。注意点は次のとおりです。
- 指標には整数または浮動小数点を使用できます。
- 数値以外の値は破棄されます。
- テスト apk は機能テストか指標テストのいずれかになりますが、両方の組み合わせは現在サポートされていません。
