返回

android-如何使用 Robolectric 触发发布到 ScheduledExecutorService 的延迟任务

发布时间:2022-07-31 01:30:41 252
# java

我想用Robolectric做一个集成测试,在机器人执行某个延迟任务后,我需要检查我的应用程序的状态ScheduledExecutorService.假设我使用以下代码定期执行任务:

ScheduledExecutorService delayedExecutor = Executors.newSingleThreadScheduledExecutor();
delayedExecutor.scheduleWithFixedDelay(storeStateTask, 60, 60, TimeUnit.SECONDS);

在我的机器人测试中,我尝试执行以下代码的组合来提前内部时间或执行挂起的任务:

Robolectric.getBackgroundThreadScheduler().advanceBy(61, TimeUnit.SECONDS);
Robolectric.getForegroundThreadScheduler().advanceBy(61, TimeUnit.SECONDS);
Robolectric.flushForegroundThreadScheduler();
Robolectric.flushBackgroundThreadScheduler();
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
shadowOf(context.getMainLooper()).idle();

所有这些都不会导致执行计划任务。你知道如何强制/控制计划任务的执行而不在生产代码中添加助手方法吗?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像