Augmented Reality-Apps sind oft auf bestimmte reale Situationen angewiesen, um zu funktionieren. Ihre App benötigt beispielsweise eine erkannte Oberfläche wie einen Tisch, um ein virtuelles Spielbrett zu platzieren. Wenn Sie Ihre App in verschiedenen Szenarien testen möchten, können Sie mit den ARCore-Testregel-APIs Tests in einer kontrollierten ARCore-Testumgebung schreiben. Die APIs übernehmen die Einrichtung und den Status der Sitzung, sodass Sie sich auf das Testen der Kernlogik Ihrer App konzentrieren können.
Bibliotheksabhängigkeiten hinzufügen
Wenn Sie die ARCore-Testregel verwenden möchten, fügen Sie der Datei build.gradle Ihrer App die folgenden Abhängigkeiten hinzu:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Groovy
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Wenn Ihre App von XR SceneCore abhängig ist, fügen Sie auch die Abhängigkeit XR SceneCore-Tests hinzu:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Testregel einrichten
Verwenden Sie in Ihrem JUnit-Test einen AndroidJUnit4-Testrunner, um einen Test einzurichten:
@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)) }
Richten Sie im Schritt @Before Ihre Testumgebung ein, einschließlich der erforderlichen Berechtigungen und der Sitzungskonfiguration.
Testläufe erstellen
Testlauf erstellen, um ein bestimmtes Szenario zu testen. In diesem Beispiel testen wir, ob ein Hand-Tracking-Gesten-Detektor mit unseren Testdaten funktioniert:
@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() }
Ein Unittest umfasst oft die folgenden Schritte:
- Verwenden Sie zum Einrichten des Tests
ArCoreTestRule, um Testdaten einzufügen. Dieses Objekt enthält die Umgebungsdaten, die Ihre App aus der Sitzung liest. Verwenden SieTestScope.advanceUntilIdle, um sicherzustellen, dass das System für den Test bereit ist. In diesem Beispiel ist die rechte Hand aktiviert und die Daten zu den Handgelenken werden mit Posedaten gefüllt. - Führen Sie dann den Test durch. Ihre App muss kein besonderes Verhalten aufweisen, um die eingefügten Daten zu verwenden:
Sessionverwendet Daten, die inArCoreTestRuleeingefügt wurden. - Prüfen Sie zum Schluss die Ergebnisse.
Zusätzliche Ressourcen
Weitere Informationen zum Testen auf Android finden Sie in den folgenden Ressourcen: