В настоящее время я пытаюсь проверить, действительно ли получен сетевой ответ.
Хотя я понимаю, что это не то, что я должен делать в отношении тестирования, это любопытство по моей собственной воле, и я хотел бы продолжить, если это возможно.
В нынешнем виде я успешно создал тест. Запрос отправляется в очередь залпа без проблем.
Теперь нечетная часть:
Этот запрос никогда не выполняется. Вот идея того, как я это тестирую:
@Test
public void testSimpleGetResponseFromServerVolley() throws Exception {
final CountDownLatch signal = new CountDownLatch(1);
NetworkClass.NetworkListener listener = new NetworkClass.NetworkListener() {
@Override
public void onResponse(Response response) {
assertThat(response != null);
System.out.println("Got Response");
signal.countDown();
}
@Override
public void onError(Throwable error) {
System.out.println("No Response");
signal.countDown();
}
};
NetworkClass.getResponseFromServer(null, listener);
signal.await();
}
Этот код неожиданно приводит к зависанию теста и его завершению.
Однако здесь я перестаю терять понимание ситуации:
Если я запускаю тест с помощью debug и выполняю его построчно, тест выполняется успешно и приходит ответ.
Что, по моему мнению, происходит:
Когда я прохожу через отладку, залп requestQueue успешно продолжается и делает запрос, и ответ получен до вызова await()
.
Когда я не выполняю отладку, await()
блокирует поток, который обрабатывает все это.
Любые идеи о том, как я могу справиться с этим?