檢測設備測試

首先,請參閱 developer.android.com 上的「測試應用程式」一文。請注意,在平台測試中使用檢測設備測試的方式有所不同。

總結來說,檢測設備測試會提供特殊測試執行方式 透過 am instrument 指令啟動的環境,並將目標鎖定為 重新啟動應用程式程序,並根據基本應用程式環境初始化 並在應用程式處理程序 VM 中啟動檢測執行緒。您的 測試程式碼會開始在此檢測執行緒上執行,並提供給 提供應用程式結構定義存取權的 Instrumentation 執行個體 以及運用 API 操控受測的應用程式程序

核心概念

  • 您必須在應用程式套件中宣告檢測, <instrumentation>敬上 標記位於應用程式套件資訊清單的 <manifest> 標記下。
  • 應用程式套件的資訊清單在技術上可能包含多個 <instrumentation> 標記,但是這個方式不常使用。
  • 每個 <instrumentation> 都必須包含:
    • android:name 屬性:這個屬性應為 Instrumentation 納入測試應用程式的一部分,通常是 使用的執行器,例如: android.support.test.runner.AndroidJUnitRunner
    • 必須定義 android:targetPackage 屬性。其值應該是 則設為測試中的應用程式套件。

步驟摘要

  1. 以下是針對架構服務的語意測試的常見目的地:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    如要為元件新增全新檢測模組,請參閱

  2. 如要將測試加到其中一個 上方。如果您要設定新的測試模組,請按照上述其中一個位置的 AndroidManifest.xmlAndroid.mk 設定步驟操作

  3. 詳情請見 frameworks/base/core/tests/coretests/ 例如, 請注意,這些行會安裝額外的應用程式:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. 別忘了將測試標示為 @SmallTest@MediumTest@LargeTest

  5. 使用 m 建構測試模組,例如:

    m FrameworksCoreTests
    
  6. 執行測試:

    • 最簡單的解決方法是使用 Atest,如下所示:

      atest FrameworksCoreTests
      
    • 如要進行更複雜的測試,請使用 貿易聯盟測試 Harness

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. 如未使用 Tradefed,請手動安裝並執行測試:

    1. 安裝產生的 APK:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. 使用不同選項執行測試:

      1. APK 中的所有測試

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. 特定 Java 套件下的所有測試

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. 特定類型的所有測試

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. 特定測試方法

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

您的測試可以使用 JUnit API,在通過時明確斷言或失敗。英吋 此外,所有未擷取的例外狀況也會造成功能故障。

如要產生成效指標,測試程式碼可以呼叫 Instrumentation#sendStatus敬上 傳送鍵/值組合清單請務必注意:

  1. 指標可以是整數或浮點數
  2. 所有非數字的值都會遭到捨棄
  3. 您的測試 APK 可以是功能測試或指標測試。 目前不支援混音