กำหนดการจัดการอุปกรณ์เสมือนจริงโดยอัตโนมัติด้วยกฎการทดสอบที่คาดการณ์ไว้

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

การทดสอบอัตโนมัติทำได้ยากเมื่อโค้ดขึ้นอยู่กับฮาร์ดแวร์จริง เช่น คุณอาจต้องเชื่อมต่อและยกเลิกการเชื่อมต่ออุปกรณ์จริงด้วยตนเองเพื่อยืนยันสถานะการเชื่อมต่อ ความท้าทายนี้อาจซับซ้อนยิ่งขึ้นไปอีกเมื่อพิจารณาถึงประเภทที่แตกต่างกัน ความสามารถ และสถานะอุปกรณ์ที่แตกต่างกันของแว่นตาอัจฉริยะสำหรับเสียงและแว่นตาอัจฉริยะสำหรับแสดงผล หากต้องการทดสอบกรณีต่างๆ เหล่านี้ ให้ใช้ Projected Test Rule API เพื่อตั้งค่าและ จัดการสภาพแวดล้อมการทดสอบแบบจำลองโดยอัตโนมัติ ไลบรารีจะจัดการการสร้างอุปกรณ์แบบจำลอง สถานะการเชื่อมต่อ และการยืนยันความสามารถ คุณจึงมุ่งเน้นไปที่การทดสอบตรรกะหลักของแอปได้ ใช้ API เหล่านี้เพื่อสร้างชุดการทดสอบที่แข็งแกร่งโดยไม่ต้องเขียนโค้ดซ้ำๆ

เพิ่มการขึ้นต่อกันของไลบรารี

หากต้องการใช้กฎการทดสอบ ให้เพิ่มอาร์ติแฟกต์การทดสอบลงในไฟล์ build.gradle ของแอป

ดึงดูด

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

ทดสอบความสามารถต่างๆ ของอุปกรณ์

แว่นตาที่มีจอแสดงผลสามารถแสดง UI ที่สร้างด้วย Jetpack Compose Glimmer ได้ โดยค่าเริ่มต้น 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