用robolectrictestingasynchronous任务

你知道如何使用Robolectric为AsyncTasks实现unit testing吗? 任何指针将不胜感激。

调用任务的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()); } 

Robolectric 2.4现在在ShadowApplication

ShadowApplication.runBackgroundTasks();