簡易建構設定

每個新測試模組都必須有設定檔,才能使用模組中繼資料、編譯時間依附元件和封裝指令,引導建構系統。Android 現在使用 Soong 建構系統,可簡化測試設定。

Soong 會使用 Blueprint 或 .bp 檔案,這些檔案是類似 JSON 的簡單宣告式模組說明,用於建構模組。這個格式會取代先前版本使用的 Make 系統。如需完整詳細資料,請參閱持續整合資訊主頁上的 Soong 參考檔案

如要進行自訂測試或使用 Android Compatibility Test Suite (CTS),請改為按照複雜測試設定操作。

範例

以下項目來自這個範例藍圖設定檔: /platform_testing/tests/example/instrumentation/Android.bp

為方便起見,我們在此附上快照:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

請注意,開頭的 android_test 宣告表示這是測試。 如果包含 android_app,則表示這是建構套件。

設定

以下設定將提供說明:

    name: "HelloWorldTests",

指定 android_test 模組類型時 (在區塊開頭),必須提供 name 設定。為模組命名,產生的 APK 也會採用相同名稱,並加上 .apk 後置字串,例如本例中產生的測試 APK 名稱為 HelloWorldTests.apk。此外,這也會定義模組的 make 目標名稱,因此您可以使用 make [options] <HelloWorldTests> 建構測試模組及其所有依附元件。

    static_libs: ["androidx.test.runner"],

static_libs 設定會指示建構系統將具名模組的內容併入目前模組產生的 APK。也就是說,每個具名模組都應產生 .jar 檔案,其內容會用於在編譯期間解析類別路徑參照,並併入產生的 APK 中。

androidx.test.runner 模組是 AndroidX Test Runner 程式庫的預先建構版本,其中包含測試執行器 AndroidJUnitRunnerAndroidJUnitRunner 支援 JUnit4 測試架構,並在 Android 10 中取代 InstrumentationTestRunner。如要進一步瞭解如何測試 Android 應用程式,請參閱「在 Android 上測試應用程式」一文。

如果您要建構新的檢測設備模組,請一律以 androidx.test.runner 程式庫做為測試執行器。平台來源樹狀結構也包含其他實用的測試架構,例如 ub-uiautomatormockito-targeteasymock 等。

    certificate: "platform",

certificate 設定會指示建構系統使用與核心平台相同的憑證簽署 APK。如果測試使用受簽章保護的權限或 API,就必須提供這項資訊。請注意,這適用於平台持續測試,但不應用於 CTS 測試模組。請注意,這個範例使用這項憑證設定僅為說明之用:範例的測試程式碼實際上不需要使用特殊平台憑證簽署測試 APK。

如果您要為系統伺服器外部的元件編寫插樁,也就是說,該元件的封裝方式與一般應用程式 APK 差不多,但會建構到系統映像檔中,而且可能是具備特殊權限的應用程式,那麼插樁很可能會以元件的應用程式套件為目標 (請參閱下方的資訊清單章節)。在這種情況下,應用程式的 makefile 可能會有自己的 certificate 設定,而插樁模組應保留相同的設定。這是因為如要以受測試應用程式為檢測設備目標,測試 APK 和應用程式 APK 必須使用相同憑證簽署。

在其他情況下,您完全不需要這項設定:建構系統會根據建構變體,使用預設的內建憑證簽署,通常稱為 dev-keys

    test_suites: ["device-tests"],

test_suites 設定可讓 Trade Federation 測試架構輕鬆探索測試。您可以在這裡新增其他套件 (例如 CTS),以便共用這項測試。

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

選用設定

以下選用設定的說明:

    test_config: "path/to/hello_world_test.xml"

test_config 設定會指示建構系統,測試目標需要特定設定。根據預設,Android.bp 旁的 AndroidTest.xml 會與設定建立關聯。

    auto_gen_config: true

auto_gen_config 設定會指出是否要自動建立測試設定。如果 Android.bp 旁邊沒有 AndroidTest.xml,則不需要明確將這個屬性設為 true。

    require_root: true

require_root 設定會指示建構系統將 RootTargetPreparer 新增至自動產生的測試設定。這樣可確保測試以根層級權限執行。

    test_min_api_level: 29

test_min_api_level 設定會指示建構系統將 MinApiLevelModuleController 新增至自動產生的測試設定。當 Trade Federation 執行測試設定時,如果裝置屬性為 ro.product.first_api_level < test_min_api_level,系統就會略過測試。