Android 如何使用机器人分子测试基于时间的任务触发的活动跳跃?
其目的是:应用程序以一个持续2秒的欢迎页面(对应的WelcomeActivity)开始,然后自动跳转到主页(对应的MainActivity)。我想写一个测试来涵盖这一点,但失败了 我的测试代码如下: 我的实现代码如下:Android 如何使用机器人分子测试基于时间的任务触发的活动跳跃?,android,Android,其目的是:应用程序以一个持续2秒的欢迎页面(对应的WelcomeActivity)开始,然后自动跳转到主页(对应的MainActivity)。我想写一个测试来涵盖这一点,但失败了 我的测试代码如下: 我的实现代码如下: 这里的关键点更像是如何测试处理程序postDelayed任务。在编写测试时,无法获取nextStartedActivity,因为处理程序需要再延迟2分钟才能执行 假设您使用Robolectric 3,并且如果您想测试处理程序延迟操作,请尝试以下操作: @Test public v
这里的关键点更像是如何测试处理程序postDelayed任务。在编写测试时,无法获取nextStartedActivity,因为处理程序需要再延迟2分钟才能执行 假设您使用Robolectric 3,并且如果您想测试处理程序延迟操作,请尝试以下操作:
@Test
public void should_navigate_to_main_activity() throws Exception {
Robolectric.setupActivity(WelcomeActivity.class);
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
ShadowApplication instance = ShadowApplication.getInstance();
Intent nextStartedActivity = instance.getNextStartedActivity();
assertNotNull(nextStartedActivity);
String className = nextStartedActivity.getComponent().getClassName();
assertThat(className, is(LoginActivity.class.getName()));
}
暗影活套由Robolectric提供。当您调用ShadowLooper.runuitThreadTasksIncludingDelayedTasks()
时,它将运行所有延迟的任务
您也可以找到类似的问题。这里的关键点更像是如何测试任务。在编写测试时,无法获取nextStartedActivity,因为处理程序需要再延迟2分钟才能执行 假设您使用Robolectric 3,并且如果您想测试处理程序延迟操作,请尝试以下操作:
@Test
public void should_navigate_to_main_activity() throws Exception {
Robolectric.setupActivity(WelcomeActivity.class);
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
ShadowApplication instance = ShadowApplication.getInstance();
Intent nextStartedActivity = instance.getNextStartedActivity();
assertNotNull(nextStartedActivity);
String className = nextStartedActivity.getComponent().getClassName();
assertThat(className, is(LoginActivity.class.getName()));
}
暗影活套由Robolectric提供。当您调用ShadowLooper.runuitThreadTasksIncludingDelayedTasks()
时,它将运行所有延迟的任务
您也可以找到类似的问题。类似的问题与我在安装活动中遇到的空指针异常类似有帮助吗?我在安装活动中遇到空指针异常有帮助吗?
@Test
public void should_navigate_to_main_activity() throws Exception {
Robolectric.setupActivity(WelcomeActivity.class);
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
ShadowApplication instance = ShadowApplication.getInstance();
Intent nextStartedActivity = instance.getNextStartedActivity();
assertNotNull(nextStartedActivity);
String className = nextStartedActivity.getComponent().getClassName();
assertThat(className, is(LoginActivity.class.getName()));
}