У меня есть служба, которая подключается к серверу Socket.IO. Это простое приложение, которое отправляет сообщение, и оно возвращается к клиенту. У меня есть тест следующим образом:Espresso ждет текстового просмотра
@Test
public void checkSendMessage() {
final String testMessage = "Here is a test message";
onView(withId(R.id.textEntry)).perform(typeText(testMessage), closeSoftKeyboard());
onView(withId(R.id.send)).perform(click());
onView(withId(R.id.messages)).check(matches(withText(containsString(testMessage))));
}
У меня есть сервер, работающий на моей локальной сети, и в этом случае все работает и проходит. Однако, если я добавлю 3-секундную задержку на сервере, тогда тест завершится с ошибкой. Я хочу в основном сказать, подождите до X секунд, а затем проверьте, содержит ли он текст.
Я видел похожие вопросы с людьми, отвечающими на использование IdlingResource. Однако я не уверен, как интегрировать это в мое приложение. Я предполагаю, что мне нужно реализовать функцию isIdleNow. Я использую службу, которая подключается к com.koushikdutta.async.http.socketio.SocketIOClient;
Он никогда не простаивает, хотя он просто сидит там, слушая сокет. Таким образом, я не очень жду, когда что-то закончится, я просто хочу продолжать проверять представление до X секунд, чтобы узнать, появилось ли сообщение. Как я могу это сделать?
Благодарим вас за сообщение. Я изменил его для своих нужд! Этот ожидает, что число дочерних элементов линейного макета будет больше нуля. Дети добавляются динамически, и нам нужно убедиться, что хотя бы один есть! https://gist.github.com/Emeritus-DarranKelinske/3ed580732dc36cebdb7bc9059e4a5efe – dazza5000
@Neo Ware, почему вы называете Espresso.unregisterIdlingResources (бездельник); сразу после регистрации? это не отменяет его сразу? – j2emanue