Google致力於提高黑人社區的種族平等。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

儀器測試

首先閱讀在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. 使用make構建測試模塊,例如:

     make FrameworksCoreTests -j
     
  6. 運行測試:

     make tradefed-all -j
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
     
  7. 如果不使用Tradefed,請手動安裝並運行測試:

    1. 安裝生成的apk:
     adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
     

    提示:您使用adb shell pm list instrumentation來查找剛剛安裝的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既可以是功能測試,也可以是指標測試,但是目前不支持將兩者混合