[英]Test that an AsyncTask was started using Robolectric
我有一個應該啟動AsyncTask
的Activity
,我想使用Robolectric 3.0測試此行為。
到目前為止,我是這樣做的,但是我對此並不滿意:
@Test
public void testAsyncTaskIsStarted() {
activity = Robolectric.setupActivity(MyActivity.class);
Assert.assertTrue(ShadowApplication.getInstance().getBackgroundThreadScheduler().areAnyRunnable());
}
有一個更好的方法嗎?
謝謝你的幫助。
最后,我通過使用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(...);
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.