有什么方法可以知道 Espresso 活动是否已开始?

2023-11-28

我正在使用 Espresso 进行活动转换测试,但我不知道这是否是最好的方法:

public void testStartLogin() {
    onView(withId(R.id.register)).perform(click());
    onView(withId(R.id.login_password)).check(matches(isDisplayed()));
    onView(withId(R.id.login_show_password)).check(matches(isDisplayed()));
}

最后两个来自第二个活动,但这对我来说看起来很糟糕。有什么不同的方法吗?


在我看来,针对属于某个活动的视图断言某些内容是检查该特定活动是否已启动的一种非常优雅的方式。来自官方文档:

同时,该框架阻止直接访问应用程序的活动和视图,因为保留这些对象并脱离 UI 线程对其进行操作是测试不稳定的主要根源。因此,您不会在 Espresso API 中看到 getView 和 getCurrentActivity 等方法。

但是,有一种方法可以实现您所需要的,如图所示here。在我的版本中,我还定义了一个断言方法,例如:

 public void assertCurrentActivityIsInstanceOf(Class<? extends Activity> activityClass) {
    Activity currentActivity = getActivityInstance();
    checkNotNull(currentActivity);
    checkNotNull(activityClass);
    assertTrue(currentActivity.getClass().isAssignableFrom(activityClass));
}

我在测试方法中使用了它。

对于我自己的测试,我在使用它时没有遇到任何问题(Espresso 2.0!),但它使它有些多余,因为我仍然会检查属于该活动的视图。所以它有效,但我不推荐它。

祝你好运!

EDIT:

还可以检查意图是否从您的第一个活动发送到第二个活动(检查这个简短的教程),但这并不一定意味着第二个活动正确显示了其所有视图。您仍然应该检查它们是否显示,这会让您回到开始的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以知道 Espresso 活动是否已开始? 的相关文章