projectedtestrule、虛擬裝置管理
如果程式碼依附於實體硬體,就難以自動執行測試。舉例來說,您可能需要手動連線及中斷實體裝置,才能驗證連線狀態。音訊眼鏡和螢幕眼鏡的類型、功能和裝置狀態各不相同,因此這項挑戰可能更加複雜。如要測試這組多樣化的案例,請使用「預測測試規則」API,自動設定及管理預測測試環境。程式庫會處理投影裝置的建立、連線狀態和功能驗證,因此您可以專心測試應用程式的核心邏輯。使用這些 API 建構強大的測試套件,不必編寫樣板程式碼。
新增程式庫依附元件
如要使用測試規則,請將測試構件新增至應用程式的 build.gradle 檔案:
Groovy
dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}
Kotlin
dependencies {
// JXR Projected testing library
testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}
設定測試規則
如要設定基本測試規則,請在測試類別中為規則加上註解。根據預設,這項規則會在每次執行測試前,連線至投影裝置並啟用視覺功能。
@get:Rule val projectedTestRule = ProjectedTestRule() private val context: Context get() = ApplicationProvider.getApplicationContext() @Test fun testWithConnectedDevice() { val projectedContext = ProjectedContext.createProjectedDeviceContext(context) assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue() }
測試其他常見情境
您已使用基本測試規則設定預測測試環境,現在請測試音訊眼鏡和螢幕眼鏡的其他常見情境,驗證應用程式功能。
測試裝置中斷連線
如要測試應用程式在眼鏡連線中斷時的反應,請使用 isDeviceConnected 屬性:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
程式碼重點
- 這項規則會在每次測試前,將
isDeviceConnected等屬性重設為預設值。您不需要在@After方法中手動重設這些屬性。
測試不同的裝置功能
顯示眼鏡可顯示使用 Jetpack Compose Glimmer 建構的 UI。根據預設,ProjectedTestRule 會啟用 CAPABILITY_VISUAL_UI。如要準確定義投影裝置支援的項目,請使用 capabilities 集。這有助於確認應用程式是否正確檢查硬體支援情形,再嘗試將內容投影到眼鏡上。
@Test fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity -> // disable display capability projectedTestRule.capabilities = setOf() runBlocking { // create the controller val controller = ProjectedDeviceController.create(activity) // verify the app recognizes the lack of visual UI support assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI) } }
程式碼重點
- 這項規則會在每次測試前,將
capabilities等屬性重設為預設值。您不需要在@After方法中手動重設這些屬性。 - 如要驗證預計會顯示眼鏡的活動行為,請使用
launchTestProjectedDeviceActivity。