Я хочу провести интеграционный тест с 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();
Ничто из этого не привело к выполнению запланированного задания. Любые идеи, как заставить / контролировать выполнение моей запланированной задачи без добавления вспомогательного метода в мой производственный код?