Я пытаюсь проверить следующий метод:
public void methodToTest() {
// Other stuff
privateMethod(false).execute(new Void[0]);
}
Который вызывает приватный метод:
private AsyncTask<Void, Void, CustomObject> privateMethod(final boolean renew) {
AsyncTask<Void, Void, CustomObject> asyncTask = new AsyncTask<Void, Void, CustomObject>() {
@Override
protected CustomObject doInBackground(Void... params) {
CustomObject custom = new CustomObject();
return custom;
}
protected void onPostExecute(CustomObject custom) {
//some code
}
};
Выполнение asyncTask невозможно выполнить в тесте с Mockito, поэтому мне нужно каким-то образом его смоделировать. Я пытался издеваться над приватным методом с PowerMock:
@Mock Context mockContext;
@Mock AsyncTask<Void, Void, CustomObject> mockAsyncTask;
@Test
public void methodTest() {
ClassToTest objectToTest = new ClassToTest(mockContext);
try {
PowerMockito.doReturn(mockAsyncTask).when(objectToTest, "privateMethod", ArgumentMatchers.anyBoolean());
objectToTest.methodToTest();
} catch (Exception e) {
e.printStackTrace();
}
}
Это дает мне исключение в строке PowerMockito (NullPointerException), говорящее
Метод вызвал исключение org.mockito.exceptions.misusing.UnfinishedStubbingException. Невозможно оценить android.os.AsyncTask $ MockitoMock $ 1952591544.toString ()
Теперь у меня заканчиваются идеи о том, как издеваться над этим объектом.