Testowanie aplikacji za pomocą reguł testowych ARCore

Obsługiwane urządzenia XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń XR.
Gogle XR
Przewodowe okulary XR
Okulary z dźwiękiem i
wyświetlaczem

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:

  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 TestScope.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.
  2. Następnie przeprowadź test. Aplikacja nie wymaga specjalnego zachowania, aby używać wstrzykniętych danych: Session używa danych, które zostały wstrzyknięte do ArCoreTestRule.
  3. Na koniec sprawdź wyniki.

Dodatkowe materiały

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