Я пытаюсь протестировать функции из моего класса Presenter. Ниже я могу достичь функции getSomeThing()
, однако не могу достичь функций getData()
и getError()
.
Функции залпа не работают в модульных тестах. Дальнейшая помощь будет высоко ценится, так как я борюсь с этим более недели.
Ниже представлен мой класс докладчика, слушатель докладчика и функция тестирования.
мой класс докладчика:
public abstract class SomePresenter implements BasePresenterListener {
private static final String sTAG = SomePresenter.class.getSimpleName();
private Context context;
private Integer testInteger;
protected SomePresenter(Context context, Integer testInteger) {
this.context = context;
this.testInteger = testInteger;
onResponse();
}
@Override
public void onResponse() {
try {
Thread.sleep(1000);
getSomeThing();
} catch (InterruptedException e) {
e.printStackTrace();
}
final GetRequest<SomeResponse> someResponseRequest =
ApiRequests.getSomeResponse(
new Response.Listener<SomeResponse>() {
@Override
public void onResponse(SomeResponse response) {
getData(response);
}
}
,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(Constant.NETWORK_ERROR);
getError(errorResponse);
}
}
);
NetworkInstance.addRequest(context, poiResponseGetRequest, sTAG);
}
public static void cancelRequest(Context context) {
NetworkInstance.cancelAllRequests(context, sTAG);
}
protected abstract void getSomeThing();
protected abstract void getData(SomeResponse response);
protected abstract void getError(ErrorResponse response);
}
мой класс BasePresenter:
public interface BasePresenterListener {
void onResponse();
}
моя функция модульного тестирования:
@Test
public void test() throws InterruptedException {
new SomePresenter(mockContext, 107){
@Override
protected void getData(PoiResponse response) {
SomeLogger.debug("getData works");//this is not called.
}
@Override
protected void getSomeThing() {
SomeLogger.debug("getSomeThing works!");//this is called.
}
@Override
protected void getError(ErrorResponse response) {
SomeLogger.debug("ErrorResponse works!"); //this is not called.
}
};
}
Я посмотрел ссылки ниже, ни одна из них не решила мою проблему.
Модульное тестирование ответа сети. Работает при отладке, а не при фактическом запуске
Тест Android-модуля с Volley
В моем случае это может достигнуть getSomething()
функция из модульного теста, но я не могу достичь ни функций getData()
, ни getError()
, потому что залп не работает в модульных тестах.
Все, getSomething()
, getData()
, getError()
являются функциями обратного вызова, я могу достичь функции getSomeThing()
, но не могу достичь функций getData()
и getError()
.