Testing async tasks with robolectric

android, robolectric, unit-testing

Solution

Call `execute(...)` on the task, then to wait for the result call `Robolectric.runBackgroundTasks()`/`Robolectric.flushBackgroundThreadScheduler()` then you can assert.

@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());
}

Problem

Do you know how to implement unit testing for AsyncTasks using Robolectric ? Any pointers will be appreciated.

Original source