На прикрепленном изображении выше это ListView с TextView (отчет о доставке)
Its status can be 'Sent' or 'Sending' or 'Failed'
Я хочу проверить состояние «Отправлено», что означает, что сообщение об отправке успешно отправлено
Поскольку это разговор, более новые сообщения будут внизу списка.
То, что я пробовал, это ...
// Type the message
ViewInteraction smsEditText = onView(withId(R.id.text_editor)).check(matches(isDisplayed()));
smsEditText.perform(typeText("abcde"));
closeSoftKeyboard();
Thread.sleep(500);
// Click on send Button
ViewInteraction smsSendButton = onView(withId(R.id.composebtnSend)).check(matches(isDisplayed()));
smsSendButton.check(matches(isEnabled()));
smsSendButton.perform(click());
Thread.sleep(3000);
// Assert for msg Sent delivery report
onData(anything()).inAdapterView(withId(R.id.history)).atPosition(2)
.onChildView(withId(R.id.timestamp)).check(matches(withText("Sent .")));
Позиция должна быть «listAdapter.getCount ()»
Я знаю, что совпадения (withText ("Отправлено") не работают, поскольку они поступают с сервера, и я не могу жестко кодировать время доставки.
onData(startsWith("Sent .")).inAdapterView(withId(R.id.history)).atPosition(????)
.onChildView(withId(R.id.timestamp)).
Как это сделать?
Обновление:
Я попробовал это и застрял в утверждении
final int[] count = new int[1];
onView(withId(R.id.history))
.check(matches(new TypeSafeMatcher<View>() {
@Override
protected boolean matchesSafely(View item) {
ListView listView = (ListView) item;
count[0] = listView.getAdapter().getCount();
return true;
}
@Override
public void describeTo(Description description) {
Log.d("ConversationListTest", "describeTo: " + description);
}
}));
onData(containsString("Sent . "))
.inAdapterView(withId(R.id.history))
.atPosition(count[0] - 1)
.onChildView(withId(R.id.timestamp))
.check(matches(isDisplayed()));
Утверждение isDisplayed () дает
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id:history'.
Примечание: не добавление 'check (match (match (isDisplayed ()))) "проходит мой тест
Что я должен использовать, чтобы утверждать это?