27

你知道如何使用 Robolectric 为 AsyncTasks 实现单元测试吗?任何指针将不胜感激。

4

2 回答 2

18

调用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());
}
于 2015-01-21T12:09:13.623 回答
7

使用 Robolectric 2.4,现在是ShadowApplication

ShadowApplication.runBackgroundTasks();

于 2015-03-11T00:02:58.107 回答