增强现实应用通常依赖于特定的现实世界情况才能正常运行。例如,您的应用可能需要检测到的表面(例如桌子)才能放置虚拟游戏板。如需针对不同 场景测试应用,请使用 ARCore 测试规则 API 在受控 ARCore 测试环境中编写测试。这些 API 会处理会话设置和状态,因此您可以专注于测试应用的核心逻辑。
添加库依赖项
如需使用 ARCore 测试规则,请将以下依赖项添加到应用的 build.gradle 文件中:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha15") }
Groovy
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha15" }
如果您的应用依赖于 XR SceneCore,请同时添加 XR SceneCore 测试依赖项:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
设置测试规则
在您的 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(context = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(Config.Builder(session.config).setHandTracking(HandTrackingMode.BOTH).build()) }
在 @Before 步骤中,设置测试环境,包括所需权限和会话配置。
创建测试用例
创建测试用例,以便测试特定场景。在此示例中,我们测试手部跟踪手势检测器是否适用于我们的测试数据:
@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() }
单元测试通常包含以下步骤:
- 如需设置测试,请使用
ArCoreTestRule注入 测试数据。此对象包含应用从会话中读取的环境数据。使用TestScope.advanceUntilIdle确保 系统已准备好执行测试。在此示例中,右手已启用,并且姿势数据用于填充手部关节数据。 - 然后,执行测试。您的应用不需要特殊行为即可使用注入的数据:
Session使用注入到ArCoreTestRule中的数据。 - 最后,检查结果。
其他资源
如需详细了解如何在 Android 上进行测试,请参阅以下资源: