簡易建構設定

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

Soong 使用的是藍圖或 .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 檔案,其內容會用於在編譯期間解析 classpath 參照,並整合至產生的 APK。

androidx.test.runner 模組是 AndroidX 測試執行緒程式庫的預先建構模組,其中包含測試執行緒 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 設定會指出是否要自動建立測試設定。如果 AndroidTest.xml 不位於 Android.bp 旁邊,則不需要明確將這個屬性設為 true。

    require_root: true

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

    test_min_api_level: 29

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