แอปเทคโนโลยีความจริงเสริม (AR) มักต้องอาศัยสถานการณ์ที่เฉพาะเจาะจงในโลกจริงจึงจะทำงานได้ ตัวอย่างเช่น แอปอาจต้องใช้พื้นผิวที่ตรวจพบ เช่น โต๊ะ เพื่อวางกระดานเกมเสมือน หากต้องการทดสอบแอปกับสถานการณ์ต่างๆ ให้ใช้ API กฎการทดสอบ ARCore เพื่อเขียนการทดสอบในสภาพแวดล้อมการทดสอบ ARCore ที่มีการควบคุม API จะจัดการการตั้งค่าและการจัดการสถานะของเซสชัน คุณจึงมุ่งเน้นไปที่การทดสอบตรรกะหลักของแอปได้
เพิ่มการขึ้นต่อกันของไลบรารี
หากต้องการใช้กฎการทดสอบ ARCore ให้เพิ่มการขึ้นต่อกันต่อไปนี้ลงในไฟล์ build.gradle ของแอป
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
ดึงดูด
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") }
ดึงดูด
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 ได้ที่แหล่งข้อมูลต่อไปนี้