Модульное тестирование в сети с использованием Volley в Android - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь протестировать функции из моего класса 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().

...