您知道如何使用Robolectric实现AsyncTasks的单元测试吗?任何指针都将受到赞赏。
答案 0 :(得分:17)
在任务上调用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());
}
答案 1 :(得分:7)
使用Robolectric 2.4,现在位于ShadowApplication
:
ShadowApplication.runBackgroundTasks();