Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

簡單的構建配置

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

Soong使用Blueprint或.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一樣打包,除了它內置在系統映像中並且可能是特權應用程序之外,您的工具很可能會定位到您組件的應用程序包(請參見下面的清單)。在這種情況下,您的應用程序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設置指示構建系統您的測試目標需要特定的配置。默認情況下, AndroidTest.xml旁邊Android.bp與配置有關。

16

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_levelro.product.first_api_level跳過測試。