Мне трудно писать автоматический тест Android.Я назначаю EditorInfo.IME_ACTION_DONE
для редактирования текста динамически, поэтому моя цель состоит в том, чтобы проверить следующие два сценария:
- Текст редактирования имеет
EditorInfo.IME_ACTION_DONE
, и после ввода и нажатия кнопки клавиатура НЕ должнабыть видимым. - Текст для редактирования имеет
EditorInfo.IME_ACTION_NEXT
, и после ввода и нажатия кнопки клавиатура должна быть видимой, поскольку теперь пользователь должен вводить следующий текст для редактирования.
Вот мой тестовый класс:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class EmailActivityTest {
@Rule public ActivityScenarioRule<EmailActivity> activityScenarioRule
= new ActivityScenarioRule<>(EmailActivity.class);
@Test
public void testEditTextDoneEmail() {
// Type email and press the action button
onView(withId(R.id.emailEditText)).perform(typeText(EMAIL_VALID), pressImeActionButton());
Context ctx = ApplicationProvider.getApplicationContext();
InputMethodManager inputMethodManager = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
Assert.assertTrue(inputMethodManager.isAcceptingText());
}
}
В тексте редактирования отображается клавиатура с кнопкой «Готово», затем клавиатура закрывается и тест проходит успешно.Однако, если я не нажимаю кнопку действия, например:
onView(withId(R.id.emailEditText)).perform(typeText(EMAIL_VALID));
, тест также проходит, поэтому я должен что-то упустить, потому что удаление вызова pressImeActionButton()
должно повлиять на результати я не вижу никакого эффекта.
Было бы также полезно проверить, какая кнопка действия отображается на клавиатуре (сделано или далее), но я не уверен, что это может быть достигнуто.
Заранее спасибо!