ทดสอบแอปด้วยกฎการทดสอบ ARCore

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ
ชุดหูฟัง XR
แว่นตา XR แบบใช้สาย
แว่นตาสำหรับเสียงและ
การแสดงผล

แอปเทคโนโลยีความจริงเสริม (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()
}

การทดสอบหน่วยมักมีขั้นตอนต่อไปนี้

  1. หากต้องการตั้งค่าการทดสอบ ให้ใช้ ArCoreTestRule เพื่อแทรก ข้อมูลทดสอบ ออบเจ็กต์นี้มีข้อมูลสภาพแวดล้อมที่แอปอ่านจากเซสชัน ใช้ TestScope.advanceUntilIdle เพื่อให้แน่ใจ ว่าระบบพร้อมที่จะทำการทดสอบ ในตัวอย่างนี้ มือขวาเปิดใช้งานอยู่ และใช้ข้อมูลท่าทางเพื่อป้อนข้อมูลข้อต่อของมือ
  2. จากนั้นทำการทดสอบ แอปไม่จำเป็นต้องมีลักษณะการทำงานพิเศษเพื่อใช้ข้อมูลที่แทรก Session จะใช้ข้อมูลที่แทรกลงใน ArCoreTestRule
  3. สุดท้าย ให้ตรวจสอบผลลัพธ์

แหล่งข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบใน Android ได้ที่แหล่งข้อมูลต่อไปนี้