У меня сейчас нет проекта с Retrofit, чтобы точно проверить ответ, однако вы должны:
- Выберите, какие тесты вы хотите запустить: модульный тест, интеграционный тест , et c?
- Выберите правильный инструмент
Скажем, вы хотите запустить модульное тестирование, это означает, что вы должны рассматривать интерфейс GoogleTokenValidatorAPI
как обычный интерфейс java , Модульные тесты не запускаются весной и не используют никакой вид HttpConnection, поэтому вам не нужно ничего делать с модернизацией, в частности:
GMailDTO expectedDTO = new GMailDTO(...);
Response<GMailDTO> expectedResponse = Response.success(expectedDTO);
Call<GmailDTO> call = Mockito.mock(Call.class);
Mockito.when(call.execute()).thenReturn(expectedResponse);
GoogleTokenValidatorAPI googleTokenValidatorAPI = Mockito.mock(GoogleTokenValidatorAPI.class);
Mockito.when(googleTokenValidatorAPI.authenticateUsingGmail(googleToken)).thenReturn(call);
....
Этот тест будет быстрым и проверит ваш код звонок. Вы также можете смоделировать неуспешный ответ, подобный этому, или даже выдать исключение, если хотите проверить, как ваш код ведет себя, если сервер недоступен
Однако вы не сможете проверить, что GmailDTO
возвращенный с сервера действительно имеет ту же структуру, что и вы ожидаете (подумайте о гипотетической ситуации, когда Google решил изменить API), он также не будет проверять, что аннотации, которые вы добавили в интерфейс для модификации, действительно допустимо (путь, ожидаемые заголовки и т. д. c.). Для этого вам нужно создать тест, который время от времени действительно вызывает Google (это означает, что технически запустите его с помощью Spring, который создаст заглушку прокси-клиента клиента во время выполнения). Технически это не будет модульное тестирование, и, как правило, вы не захотите запускать его для каждой сборки (это ваше решение в основном). Однако такой тест не имеет ничего общего с вашим собственным кодом вокруг вызова, поэтому я сосредоточился в основном на модульном тестировании.