每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。 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 測試運行器庫預構建的,其中包括測試運行器AndroidJUnitRunner
。 AndroidJUnitRunner
支持 JUnit4 測試框架並取代了 Android 10 中的InstrumentationTestRunner
。在Android 上的測試應用程序中閱讀有關測試 Android 應用程序的更多信息。
如果您正在構建一個新的檢測模塊,您應該始終從androidx.test.runner
庫作為您的測試運行器開始。平台源代碼樹還包括其他有用的測試框架,例如ub-uiautomator
、 mockito-target
、 easymock
等。
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 測試運行器庫預構建的,其中包括測試運行器AndroidJUnitRunner
。 AndroidJUnitRunner
支持 JUnit4 測試框架並取代了 Android 10 中的InstrumentationTestRunner
。在Android 上的測試應用程序中閱讀有關測試 Android 應用程序的更多信息。
如果您正在構建一個新的檢測模塊,您應該始終從androidx.test.runner
庫作為您的測試運行器開始。平台源代碼樹還包括其他有用的測試框架,例如ub-uiautomator
、 mockito-target
、 easymock
等。
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 測試運行器庫預構建的,其中包括測試運行器AndroidJUnitRunner
。 AndroidJUnitRunner
支持 JUnit4 測試框架並取代了 Android 10 中的InstrumentationTestRunner
。在Android 上的測試應用程序中閱讀有關測試 Android 應用程序的更多信息。
如果您正在構建一個新的檢測模塊,您應該始終從androidx.test.runner
庫作為您的測試運行器開始。平台源代碼樹還包括其他有用的測試框架,例如ub-uiautomator
、 mockito-target
、 easymock
等。
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
的設備屬性將跳過測試。