ARCore 테스트 규칙으로 앱 테스트

적용 가능한 XR 기기
이 안내는 이러한 유형의 XR 기기용 환경을 구축하는 데 도움이 됩니다.
XR 헤드셋
유선 XR 글라스
오디오 및
디스플레이 글래스

증강 현실 앱은 작동하기 위해 특정 실제 상황에 의존하는 경우가 많습니다. 예를 들어 앱에서 가상 게임판을 배치하려면 감지된 표면(예: 테이블)이 필요할 수 있습니다. 다양한 시나리오에 대해 앱을 테스트하려면 ARCore 테스트 규칙 API를 사용하여 제어된 ARCore 테스트 환경에서 테스트를 작성하세요. API가 세션 설정과 상태를 처리하므로 앱의 핵심 로직 테스트에 집중할 수 있습니다.

라이브러리 종속 항목 추가

ARCore 테스트 규칙을 사용하려면 앱의 build.gradle 파일에 다음 종속 항목을 추가하세요.

Kotlin

dependencies {
    testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14")
}

Groovy

dependencies {
    testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14"
}

앱이 XR SceneCore에 종속되는 경우 XR SceneCore 테스트 종속 항목도 포함하세요.

Kotlin

dependencies {
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15")
}

Groovy

dependencies {
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15"
}

테스트 규칙 설정

JUnit 테스트에서 AndroidJUnit4 테스트 실행기를 사용하여 테스트를 설정합니다.

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

@Before 단계에서 필수 권한과 세션 구성을 비롯한 테스트 환경을 설정합니다.

테스트 사례 만들기

특정 시나리오를 테스트하려면 테스트 사례를 만드세요. 이 예에서는 손 추적 동작 감지기가 테스트 데이터와 함께 작동하는지 테스트합니다.

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

단위 테스트에는 다음 단계가 포함되는 경우가 많습니다.

  1. 테스트를 설정하려면 ArCoreTestRule를 사용하여 테스트 데이터를 삽입합니다. 이 객체에는 앱이 세션에서 읽어오는 환경 데이터가 포함되어 있습니다. TestScope.advanceUntilIdle을 사용하여 시스템이 테스트를 실행할 준비가 되었는지 확인합니다. 이 예에서는 오른쪽 손이 사용 설정되어 있으며 포즈 데이터를 사용하여 손 관절 데이터를 채웁니다.
  2. 그런 다음 테스트를 실행합니다. 삽입된 데이터를 사용하기 위해 앱에 특별한 동작이 필요하지 않습니다. SessionArCoreTestRule에 삽입된 데이터를 사용합니다.
  3. 마지막으로 결과를 확인합니다.

추가 리소스

Android에서 테스트하는 방법을 자세히 알아보려면 다음 자료를 참고하세요.