我有Activity
应该启动AsyncTask
,我想使用Robolectric 3.0来测试这种行为。
到目前为止,我是这样做的,但我对此并不满意:
@Test
public void testAsyncTaskIsStarted() {
activity = Robolectric.setupActivity(MyActivity.class);
Assert.assertTrue(ShadowApplication.getInstance().getBackgroundThreadScheduler().areAnyRunnable());
}
有更好的方法吗?
感谢您的帮助。
答案 0 :(得分:0)
我终于通过用Mockito嘲笑我的AsyncTask
来做到这一点。
在我的Activity
中,我将AsyncTask
作为一个类字段提取出来,以便能够模拟它:
public void MyActivity extends Activity {
MyAsyncTask task;
public void onCreate (...) {
...
if (task == null)
task = new MyAsyncTask();
task.execute(...);
...
}
在我的测试中:
MyAsyncTask asyncTaskMock = Mockito.mock(MyAsyncTask.class);
@Test
public void testAsyncTaskIsStarted() {
controller = Robolectric.buildActivity(MyActivity.class);
controller.get().task = asyncTaskMock;
controller.create().resume().visible();
Mockito.verify(asyncTaskMock).execute(...);
}
希望这有帮助。