증강 현실 앱은 작동하기 위해 특정 실제 상황에 의존하는 경우가 많습니다. 예를 들어 앱에서 가상 게임판을 배치하려면 감지된 표면(예: 테이블)이 필요할 수 있습니다. 다양한 시나리오에 대해 앱을 테스트하려면 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() }
단위 테스트에는 다음 단계가 포함되는 경우가 많습니다.
- 테스트를 설정하려면
ArCoreTestRule를 사용하여 테스트 데이터를 삽입합니다. 이 객체에는 앱이 세션에서 읽어오는 환경 데이터가 포함되어 있습니다.TestScope.advanceUntilIdle을 사용하여 시스템이 테스트를 실행할 준비가 되었는지 확인합니다. 이 예에서는 오른쪽 손이 사용 설정되어 있으며 포즈 데이터를 사용하여 손 관절 데이터를 채웁니다. - 그런 다음 테스트를 실행합니다. 삽입된 데이터를 사용하기 위해 앱에 특별한 동작이 필요하지 않습니다.
Session는ArCoreTestRule에 삽입된 데이터를 사용합니다. - 마지막으로 결과를 확인합니다.
추가 리소스
Android에서 테스트하는 방법을 자세히 알아보려면 다음 자료를 참고하세요.