Как вызвать отложенную задачу, опубликованную в ScheduledExecutorService с Robolectric - PullRequest
0 голосов
/ 16 мая 2019

Я хочу провести интеграционный тест с 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();

Ничто из этого не привело к выполнению запланированного задания. Любые идеи, как заставить / контролировать выполнение моей запланированной задачи без добавления вспомогательного метода в мой производственный код?

...