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:
- Untuk menyiapkan pengujian, gunakan
ArCoreTestRuleuntuk menyuntikkan data pengujian. Objek ini berisi data lingkungan yang dibaca aplikasi Anda dari sesi. GunakanTestScope.advanceUntilIdleuntuk memastikan sistem siap melakukan pengujian. Dalam contoh ini, tangan kanan diaktifkan, dan data pose digunakan untuk mengisi data sendi tangan. - Kemudian, lakukan pengujian. Aplikasi Anda tidak memerlukan perilaku khusus untuk menggunakan data yang disuntikkan:
Sessionmenggunakan data yang disuntikkan keArCoreTestRule. - Terakhir, periksa hasilnya.
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang pengujian di Android, lihat referensi berikut: