我想与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();
没有一个导致计划任务的执行。有什么想法可以在不向生产代码中添加辅助方法的情况下强制/控制计划任务的执行吗?
答案 0 :(得分:0)
Robolectric似乎不支持ScheduledExecutorService。尝试使用RoboExecutorService。