1
我正在使用ApplicationTestCase測試一個Android應用程序。我想模仿我AsyncTasks(例如簡化爲說明問題)中的一個:爲什麼不使用AsyncTask進行模擬?
public class Foo extends AsyncTask<Void,Void,Void> {
@Override
protected Void doInBackground(Void... unused) {
return null;
}
}
因此,要建立我的測試,我做了以下內容:
private Foo mockFoo;
@Override
protected void setUp() throws Exception {
super.setUp()
mockFoo = mock(Foo.class);
createApplication();
}
然後實際測試是以下:
public void testAsyncTaskMock() {
mockFoo.execute();
verify(mockFoo).execute();
}
,但我得到一個異常時,mockFoo.execute();
運行:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.AsyncTask$Status.ordinal()' on a null object reference
爲什麼嘲笑AsyncTask不起作用的技術?
請注意,刪除createApplication();
會導致此問題在此簡單情況下消失,但對於我的實際測試,我確實需要創建應用程序。
Robolectric + 1!我喜歡它的理念 - 爲什麼要測試交互?改爲測試效果。 – ZhongYu