簡單的構建配置

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

宋使用藍圖或.bp文件,它們是類JSON模塊來構建的簡單的聲明描述。這種格式取代了以前版本中使用的基於 Make 的系統。見宋參考文件上的持續集成儀表盤的全部細節。

為了適應自定義測試或使用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",

name時,需要設置android_test (在塊的開始)被指定模塊類型。它給出了一個名字你的模塊,並將得到的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設置使得測試受貿易聯盟測試工具很容易發現。可以在此處添加其他套件,例如 CTS,以便可以共享此測試。

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

可選設置

以下可選設置獲得解釋:

    test_config: "path/to/hello_world_test.xml"

test_config設置指示您的測試目標需要一個特定的配置構建系統。默認情況下, AndroidTest.xml旁邊Android.bp與配置有關。

    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添加到自動生成的測試配置。當貿易聯邦運行測試配置中,測試將被跳過,如果的設備屬性ro.product.first_api_level < test_min_api_level