請先閱讀 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 測試 Harness: 
 - 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,傳送鍵/值組合清單。請注意下列重要事項:
- 指標可以是整數或浮點數
- 系統會捨棄所有非數值
- 測試 APK 可以是功能測試或指標測試,但目前不支援混合使用
