簡易的建構設定

每個新的測試模組都必須擁有設定檔,用於引導建構系統 以及模組中繼資料、編譯時間依附元件和封裝操作說明 Android 現已使用 Soong 建構系統,可簡化測試設定。

Soong 使用 Blueprint 或 .bp 檔案,這些都類似於 JSON 的簡單宣告式 待建構模組的描述這個格式取代了 Make-based 系統 所用的儲存空間。請參閱 Soong 參考檔案 詳情請參閱持續整合資訊主頁

如要配合自訂測試,請使用 Android Compatibility Test Suite (CTS),請參照 複雜測試設定

範例

下列項目來自這個 Blueprint 設定檔範例: /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 [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 設定可讓交易人員輕鬆找到檢測結果 聯盟測試控管工具。你可以在這裡新增其他套件 (例如 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 新增至自動產生的測試設定。這可確保測試以 root 權限執行。

    test_min_api_level: 29

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