簡單的構建配置

每個新的測試模組都必須有一個配置文件,以使用模組元資料、編譯時依賴項和打包指令來指導建置系統。 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: ["androidx.test.runner"],
    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: ["androidx.test.runner"],

static_libs設定指示建置系統將命名模組的內容合併到目前模組產生的 apk 中。這意味著每個命名模組都會產生一個.jar文件,其內容將用於在編譯時解析類別路徑引用,並合併到生成的 apk 中。

androidx.test.runner模組是為 AndroidX 測試運行器庫預先建立的,其中包括測試運行器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設定使 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設定指示是否自動建立測試配置。如果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_level的裝置屬性,將跳過測試。