簡體   English   中英

測試使用Robolectric啟動了AsyncTask

[英]Test that an AsyncTask was started using Robolectric

我有一個應該啟動AsyncTaskActivity ,我想使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM