Aplikacje korzystające z rzeczywistości rozszerzonej często wymagają określonych sytuacji w świecie rzeczywistym, aby działać. Na przykład aplikacja może wymagać wykrycia powierzchni, takiej jak stół, aby umieścić na niej wirtualną planszę do gry. Aby przetestować aplikację w różnych scenariuszach, użyj interfejsów ARCore test rule API do pisania testów w kontrolowanym środowisku testowym ARCore. Interfejsy API obsługują konfigurację sesji i jej stan, więc możesz skupić się na testowaniu podstawowej logiki aplikacji.
Dodawanie zależności biblioteki
Aby użyć reguły testowania ARCore, dodaj te zależności do pliku build.gradleaplikacji:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha15") }
Dynamiczny
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha15" }
Jeśli Twoja aplikacja zależy od XR SceneCore, dodaj też zależność testowania XR SceneCore:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16") }
Dynamiczny
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
Konfigurowanie reguły testowej
W teście JUnit użyj AndroidJUnit4uruchamiacza 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(context = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(Config.Builder(session.config).setHandTracking(HandTrackingMode.BOTH).build()) }
W @Before kroku skonfiguruj środowisko testowe, w tym wymagane uprawnienia i konfigurację sesji.
Tworzenie przypadków testowych
Utwórz element testowania, aby przetestować określony scenariusz. W tym przykładzie sprawdzamy, czy detektor gestów śledzenia rąk działa z naszymi danymi testowymi:
@Test fun test_thumbsUp() = runTest(testDispatcher) { arCoreTestRule.rightHandTester.isVisible = true arCoreTestRule.rightHandTester.handJointMap = gestureThumbsUp advanceUntilIdle() val handState = Hand.right(session).state.value 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żyj poleceniaTestScope.advanceUntilIdle, aby sprawdzić, czy system jest gotowy do przeprowadzenia testu. W tym przykładzie prawa ręka jest włączona, a dane o pozycji są używane do wypełniania danych o stawach dłoni. - Następnie przeprowadź test. Aplikacja nie musi mieć specjalnego działania, aby korzystać z wstrzykniętych danych:
Sessionużywa danych wstrzykniętych doArCoreTestRule. - Na koniec sprawdź wyniki.
Dodatkowe materiały
Więcej informacji o testowaniu na Androidzie znajdziesz w tych materiałach: