使用robolectric测试异步任务

时间:2013-02-23 01:12:21

标签: android unit-testing robolectric

您知道如何使用Robolectric实现AsyncTasks的单元测试吗?任何指针都将受到赞赏。

2 个答案:

答案 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();