【问题标题】:How to check the current Activity in a UI test如何在 UI 测试中检查当前 Activity
【发布时间】:2020-03-15 09:33:06
【问题描述】:

对于测试,我使用 Espresso 和 Barista 我有一个测试,我需要按一个按钮打开另一个屏幕。如何检查此屏幕是否打开?我需要的屏幕打开了吗?

我能以某种方式检查屏幕链吗?要了解屏幕按我需要的顺序打开吗?

如果有人提供有关 Android 中 UI 测试的优秀教程的链接,我将不胜感激。

【问题讨论】:

    标签: android testing automated-tests android-espresso


    【解决方案1】:

    一个简单的解决方案是只检查新屏幕的元素是否显示如下:

    onView(withId(R.id.id_of_element_in_your_new_screen)).check(matches(isDisplayed()))
    

    如果您真的想查看显示的当前活动,您可以尝试以下操作:

    通过InstrumentationRegistry收集当前活动并检查阶段RESUMED中的活动。

    fun getTopActivity(): Activity? {
        InstrumentationRegistry.getInstrumentation().runOnMainSync {
            val resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED)
            if (resumedActivities.iterator().hasNext()) {
                resumedActivities.iterator().next()?.let {
                    activity = it
                }
            }
        }
        return activity
    }
    

    然后您可以在这样的测试中进行检查:

    @Test
    fun checkForActivity() {
        val currentActivity = getTopActivity()
        assertTrue(currentActivity?.javaClass == YourActivityToCheckAgainst::class.java)
    }
    

    【讨论】:

      【解决方案2】:

      我个人使用intended(hasComponent(YourActivityToCheckAgainst::class.java.name)),它检查最后一个意图是否完成了所需的活动,并将其设置为组件。

      我还使用 Espresso + Barista 库编写了丰富的 Android UI testing tutorial

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多