Menguji aplikasi Anda dengan aturan pengujian ARCore

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Headset XR
Kacamata XR Berkabel
Kacamata Audio &
Tampilan

Aplikasi augmented reality sering kali bergantung pada situasi dunia nyata tertentu agar dapat berfungsi. Misalnya, aplikasi Anda mungkin memerlukan permukaan yang terdeteksi, seperti meja, untuk menempatkan papan game virtual. Untuk menguji aplikasi Anda terhadap berbagai skenario, gunakan ARCore test rule API untuk menulis pengujian di lingkungan pengujian ARCore yang terkontrol. API menangani penyiapan dan status sesi, sehingga Anda dapat berfokus pada pengujian logika inti aplikasi.

Menambahkan dependensi library

Untuk menggunakan ARCore test rule, tambahkan dependensi ini ke file build.gradle aplikasi Anda:

Kotlin

dependencies {
    testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14")
}

Groovy

dependencies {
    testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14"
}

Jika aplikasi Anda bergantung pada XR SceneCore, sertakan juga pengujian XR SceneCore dependensi:

Kotlin

dependencies {
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15")
}

Groovy

dependencies {
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15"
}

Menyiapkan test rule

Dalam pengujian JUnit, gunakan AndroidJUnit4 runner pengujian untuk menyiapkan pengujian:

@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))
}

Pada langkah @Before, siapkan lingkungan pengujian Anda, termasuk izin yang diperlukan dan konfigurasi sesi.

Membuat kasus pengujian

Buat kasus pengujian untuk menguji skenario tertentu. Dalam contoh ini, kita menguji apakah detektor gestur pelacakan gerak tangan berfungsi dengan data pengujian kita:

@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()
}

Pengujian unit sering kali berisi langkah-langkah berikut:

  1. Untuk menyiapkan pengujian, gunakan ArCoreTestRule untuk menyuntikkan data pengujian. Objek ini berisi data lingkungan yang dibaca aplikasi Anda dari sesi. Gunakan TestScope.advanceUntilIdle untuk memastikan sistem siap melakukan pengujian. Dalam contoh ini, tangan kanan diaktifkan, dan data pose digunakan untuk mengisi data sendi tangan.
  2. Kemudian, lakukan pengujian. Aplikasi Anda tidak memerlukan perilaku khusus untuk menggunakan data yang disuntikkan: Session menggunakan data yang disuntikkan ke ArCoreTestRule.
  3. Terakhir, periksa hasilnya.

Referensi lainnya

Untuk mengetahui informasi selengkapnya tentang pengujian di Android, lihat referensi berikut: