Do you know how to implement unit testing for AsyncTasks using Robolectric ? Any pointers will be appreciated.
With Robolectric 2.4 this is now in ShadowApplication
:
ShadowApplication.runBackgroundTasks();
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());
}