Подтвердить что ты не робот

Тестирование асинхронных задач с помощью robolectric

Вы знаете, как реализовать модульное тестирование для AsyncTasks с помощью Robolectric? Любые указатели будут оценены.

4b9b3361

Ответ 1

Вызвать execute(...) в задаче, затем дождаться ответного результата Robolectric.runBackgroundTasks()/Robolectric.flushBackgroundThreadScheduler(), после чего вы можете утверждать.

@Test
public void test() {
    //create task
    MyAsyncTask asyncTask = new MyAsyncTask();

    //start task
    asyncTask.execute(...);

    //wait for task code
    // Robolectric.runBackgroundTasks(); (pre 3.0)
    Robolectric.flushBackgroundThreadScheduler(); //from 3.0

    //can run asserts on result now
    assert...(asyncTask.get());
}

Ответ 2

С Robolectric 2.4 это теперь находится в ShadowApplication:

ShadowApplication.runBackgroundTasks();