首先,請參閱 developer.android.com 上的「測試應用程式」一文。請注意,在平台測試中使用檢測設備測試的方式有所不同。
總結來說,檢測設備測試會提供特殊測試執行方式
透過 am instrument
指令啟動的環境,並將目標鎖定為
重新啟動應用程式程序,並根據基本應用程式環境初始化
並在應用程式處理程序 VM 中啟動檢測執行緒。您的
測試程式碼會開始在此檢測執行緒上執行,並提供給
提供應用程式結構定義存取權的 Instrumentation
執行個體
以及運用 API 操控受測的應用程式程序
核心概念
- 您必須在應用程式套件中宣告檢測,
<instrumentation>
敬上 標記位於應用程式套件資訊清單的<manifest>
標記下。 - 應用程式套件的資訊清單在技術上可能包含多個
<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
如要進行更複雜的測試,請使用 貿易聯盟測試 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 可以是功能測試或指標測試。 目前不支援混音