Aplikacje rzeczywistości rozszerzonej często wymagają do działania określonych sytuacji w świecie rzeczywistym. Na przykład aplikacja może wymagać wykrycia powierzchni, takiej jak stół, aby umieścić na niej wirtualną planszę. Aby przetestować aplikację w różnych scenariuszach, użyj interfejsów API reguł testowych ARCore do pisania testów w kontrolowanym środowisku testowym ARCore. Interfejsy API obsługują konfigurację sesji i jej stan, dzięki czemu możesz skupić się na testowaniu podstawowej logiki aplikacji.
Dodawanie zależności biblioteki
Aby użyć reguły testowej ARCore, dodaj te zależności do pliku build.gradle aplikacji:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Dynamiczny
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Jeśli Twoja aplikacja zależy od XR SceneCore, uwzględnij też zależność testową XR SceneCore:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Dynamiczny
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Konfigurowanie reguły testowej
W teście JUnit użyj
AndroidJUnit4 narzędzia do uruchamiania testów, aby skonfigurować test:
@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)) }
W kroku @Before skonfiguruj środowisko testowe, w tym wymagane uprawnienia i konfigurację sesji.
Tworzenie przypadków testowych
Utwórz przypadek testowy, aby przetestować określony scenariusz. W tym przykładzie sprawdzamy, czy detektor śledzenia rąk działa z naszymi danymi testowymi:
@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() }
Test jednostkowy często obejmuje te kroki:
- Aby skonfigurować test, użyj
ArCoreTestRuledo wstrzyknięcia danych testowych. Ten obiekt zawiera dane środowiska, które aplikacja odczytuje z sesji. UżyjTestScope.advanceUntilIdle, aby upewnić się , że system jest gotowy do przeprowadzenia testu. W tym przykładzie włączona jest prawa ręka, a dane o pozycji są używane do wypełniania danych o stawach dłoni. - Następnie przeprowadź test. Aplikacja nie wymaga specjalnego zachowania, aby używać wstrzykniętych danych:
Sessionużywa danych, które zostały wstrzyknięte doArCoreTestRule. - Na koniec sprawdź wyniki.
Dodatkowe materiały
Więcej informacji o testowaniu na Androidzie znajdziesz w tych materiałach: