Android에서 Mockito로 AsyncTask를 조롱하는 데 어려움을 겪고 있습니다. 이 테스트는 NullPointerException의 결과로 실패합니다.mockito를 사용하여 AsyncTask를 모의 처리하면 NullPointerException이 발생합니다.
여기가 내 테스트입니다. UI 스레드에서 실행 해 보았습니다. 여기
@UiThreadTest
public void testWhenUpdatingContent_ShouldExecuteContentUpdater() {
ContentUpdater contentUpdaterMock = mock(ContentUpdater.class);
ContentExtractor contentExtractorMock = mock(ContentExtractor.class);
ContentManager contentManager = new ContentManager(contentUpdaterMock, contentExtractorMock);
contentManager.updateContent();
verify(contentUpdaterMock).execute(contentExtractorMock);
}
는 ContentManager의 아주 간단한 코드입니다;
public class ContentManager {
private ContentUpdater contentUpdater;
private ContentExtractor contentExtractor;
public ContentManager(ContentUpdater contentUpdater, ContentExtractor contentExtractor) {
this.contentUpdater = contentUpdater;
this.contentExtractor = contentExtractor;
}
public void updateContent() {
contentUpdater.execute(contentExtractor);
}
}
예외는 contentUpdater.execute(...)
에서 발생합니다. 나는 contentUpdater
이 조롱 당했기 때문에 execute(...)
이 왜 불려지는지 알지 못한다. 나는 정말로 내 문제인 것처럼 보인다.
여기에 stacktrace가 있습니다.
java.lang.NullPointerException
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:574)
at android.os.AsyncTask.execute(AsyncTask.java:535)
at com.axis4.adder_ladder.ContentManager.updateContent(ContentManager.java:15)
at com.axis4.adder_ladder.test.ContentManagerTest.testWhenUpdatingContent_ShouldExecuteContentUpdater(ContentManagerTest.java:22)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.access$000(InstrumentationTestCase.java:36)
at android.test.InstrumentationTestCase$2.run(InstrumentationTestCase.java:189)
at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
참조 케이? – behelit