簡單的構建配置

每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。 Android 現在使用Soong 構建系統進行更簡單的測試配置。

Soong 使用藍圖或.bp文件,它們是要構建的模塊的類似 JSON 的簡單聲明性描述。這種格式取代了以前版本中使用的基於 Make 的系統。有關完整詳細信息,請參閱持續集成儀表板上Soong 參考文件

要適應自定義測試或使用 Android兼容性測試套件(CTS),請改為遵循複雜測試配置

例子

以下條目來自此示例藍圖配置文件: /platform_testing/tests/example/instrumentation/Android.bp

為方便起見,此處包含快照:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["android-support-test"],
    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: ["android-support-test"],

static_libs設置指示構建系統將命名模塊的內容合併到當前模塊的結果 apk 中。這意味著每個命名模塊都應生成一個.jar文件,其內容將用於在編譯期間解析類路徑引用,並合併到生成的 apk 中。

在這個例子中,通常對測試有用的東西:

android-support-test是為 Android 測試支持庫預構建的,其中包括新的測試AndroidJUnitRunner :替代現已棄用的內置InstrumentationTestRunner ,支持 JUnit4 測試框架。在 Android 上測試應用了解更多信息。

如果你正在構建一個新的檢測模塊,你應該總是從android-support-test庫開始作為你的測試運行器。平台源代碼樹還包括其他有用的測試框架,如ub-uiautomatormockito-targeteasymock等。

    certificate: "platform",

certificate設置指示構建系統使用與核心平台相同的證書對 apk 進行簽名。如果您的測試使用受簽名保護的權限或 API,則需要這樣做。請注意,這適用於平台連續測試,但不應在 CTS 測試模塊中使用。請注意,此示例僅出於說明目的使用此證書設置:示例的測試代碼實際上不需要使用特殊平台證書對測試 apk 進行簽名。

如果您正在為位於系統服務器之外的組件編寫工具,也就是說,它或多或少像常規應用程序 apk 一樣打包,只是它內置在系統映像中並且可能是特權應用程序,那麼您的工具很可能會以組件的應用程序包為目標(請參閱下面有關清單的部分)。在這種情況下,您的應用程序生成文件可能有自己的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 添加到自動生成的測試配置中。這保證了測試以 root 權限運行。

    test_min_api_level: 29

test_min_api_level設置指示構建系統將 MinApiLevelModuleController 添加到自動生成的測試配置中。 Trade Federation 運行測試配置時,如果ro.product.first_api_level的設備屬性 < test_min_api_level ,則將跳過測試。