Я пишу модульные тесты для Android-приложения, код которого я не должен менять. Я столкнулся с проблемой тестирования кода с использованием java.util.Timer
. Я ищу способ заставить задачу выполнить немедленно, без необходимости ждать до запланированного времени. Поскольку он создан как локальный объект, я не могу издеваться над ним с Mockito.robolectric unit test android Timer
public void testedMethod() {
long time = 9999;
final Timer timer = new Timer()
timer.schedule(new TimerTask() {
@Override
public void run() {
//do stuff
}
}, time);
}
@Test
public void test() throws Exception {
testedObject.testedMethod();
Thread.sleep(10000);
//verify that stuff was done
}
Я использую Robolectric (3.1), поэтому я попытался с помощью методов ShadowLooper
и Robolectric
классов, но безрезультатно. В настоящее время я должен использовать Thread.sleep()
, но это довольно неудобно.
Есть ли способ заставить Timer
для выполнения запланированных TimerTasks
, как с помощью ShadowLooper.runToEndOfTasks()
выполнить Runnables запланированных Handler
?