使用robolectric测试异步任务

bia*_*nca 23 android unit-testing robolectric

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

wes*_*ton 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());
}
Run Code Online (Sandbox Code Playgroud)

  • @OliverMetz 问一个新问题。 (2认同)

Fel*_*ima 7

使用Robolectric 2.4,现在是ShadowApplication:

ShadowApplication.runBackgroundTasks();