簡單的構建配置

每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。 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: ["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設置指示是否自動創建測試配置。如果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的設備屬性將跳過測試。

,

每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。 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: ["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設置指示是否自動創建測試配置。如果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的設備屬性將跳過測試。

,

每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。 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: ["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設置指示是否自動創建測試配置。如果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的設備屬性將跳過測試。