簡易的建構設定

每個新的測試模組都必須擁有設定檔,用於引導建構系統 以及模組中繼資料、編譯時間依附元件和封裝操作說明 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 加入自動產生的測試設定這麼做可保證執行測試是在根目錄中執行 授予其要求的權限。

    test_min_api_level: 29

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