Testowanie aplikacji za pomocą reguł testowych ARCore

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń XR.
Gogle XR
Okulary XR z przewodem
Okulary audio i
wyświetlacz

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

@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:

  1. Aby skonfigurować test, użyj ArCoreTestRule do wstrzyknięcia danych testowych. Ten obiekt zawiera dane środowiska, które aplikacja odczytuje z sesji. Użyj polecenia TestScope.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.
  2. Następnie przeprowadź test. Aplikacja nie musi mieć specjalnego działania, aby korzystać z wstrzykniętych danych: Session używa danych wstrzykniętych do ArCoreTestRule.
  3. Na koniec sprawdź wyniki.

Dodatkowe materiały

Więcej informacji o testowaniu na Androidzie znajdziesz w tych materiałach: