擴增實境應用程式通常需要特定現實生活情境才能運作。舉例來說,您的應用程式可能需要偵測到桌面等平面,才能放置虛擬遊戲板。如要針對不同情境測試應用程式,請使用 ARCore 測試規則 API,在受控的 ARCore 測試環境中編寫測試。這些 API 會處理工作階段設定和狀態,因此您可以專注於測試應用程式的核心邏輯。
新增程式庫依附元件
如要使用 ARCore 測試規則,請在應用程式的 build.gradle 檔案中新增下列依附元件:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Groovy
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
如果應用程式依附於 XR SceneCore,請一併加入 XR SceneCore 測試依附元件:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
設定測試規則
在 JUnit 測試中,使用 AndroidJUnit4 測試執行器設定測試:
@Rule @JvmField val arCoreTestRule = ArCoreTestRule() private lateinit var activityController: ActivityController<ComponentActivity> private lateinit var activity: ComponentActivity private lateinit var testDispatcher: TestDispatcher private lateinit var testScope: TestScope private lateinit var session: Session @Before fun setUp() { testDispatcher = StandardTestDispatcher() testScope = TestScope(testDispatcher) activityController = Robolectric.buildActivity(ComponentActivity::class.java) activity = activityController.get() // Set up the activity permissions. shadowOf(activity.application).grantPermissions(HAND_TRACKING) activityController.create().start().resume() val sessionCreateResult = Session.create(activity = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH)) }
在 @Before 步驟中,設定測試環境,包括必要權限和工作階段設定。
建立測試案例
建立測試案例,測試特定情境。在本範例中,我們會測試手部追蹤手勢偵測器是否能處理測試資料:
@Test fun test_thumbsUp() = runTest(testDispatcher) { arCoreTestRule.rightHand.isVisible = true arCoreTestRule.rightHand.handJointMap = gestureThumbsUp advanceUntilIdle() val handState = Hand.right(session)?.state?.value ?: fail("Did not detect a right hand") val isThumbsUp = detectThumbsUp(handState) assertThat(isThumbsUp).isTrue() }
單元測試通常包含下列步驟:
- 如要設定測試,請使用
ArCoreTestRule插入測試資料。這個物件包含應用程式從工作階段讀取的環境資料。請使用TestScope.advanceUntilIdle確保系統已準備好執行測試。在這個範例中,右手已啟用,且姿勢資料用於填入手部關節資料。 - 然後執行測試。應用程式不需要特殊行為即可使用注入的資料:
Session會使用注入ArCoreTestRule的資料。 - 最後,請查看結果。
其他資源
如要進一步瞭解如何在 Android 裝置上測試,請參閱下列資源: