Проверьте, отображается ли программная клавиатура Android после нажатия кнопки ImIctionButton () с помощью Expresso - PullRequest
0 голосов
/ 23 мая 2019

Мне трудно писать автоматический тест Android.Я назначаю EditorInfo.IME_ACTION_DONE для редактирования текста динамически, поэтому моя цель состоит в том, чтобы проверить следующие два сценария:

  1. Текст редактирования имеет EditorInfo.IME_ACTION_DONE, и после ввода и нажатия кнопки клавиатура НЕ должнабыть видимым.
  2. Текст для редактирования имеет 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() должно повлиять на результати я не вижу никакого эффекта.

Было бы также полезно проверить, какая кнопка действия отображается на клавиатуре (сделано или далее), но я не уверен, что это может быть достигнуто.

Заранее спасибо!

...