Я пытаюсь написать тесты пользовательского интерфейса для языка RTL.Вот сценарий.У меня есть AutoCompleteTextView, на котором, когда я пытаюсь пометить пользователя ("@user"), он показывает выпадающий список предлагаемых пользователей.Это работает для языков RTL и LTR, когда я вручную печатаю строки.Однако, если я попытаюсь проверить функциональность эспрессо, он не будет работать, как ожидалось.
Вот как я пытаюсь написать тест пользовательского интерфейса: Всякий раз, когда я говорю редактировать текст, набирая «@u», используя onView(withId(R.id.message_input_field)).perform(typeText("@u"))
, Espresso генерирует ключевые события, чтобы ввести символы в текст редактирования.Что-то вроде KEY_DOWN_SHIFT, KEY_DOWN_2, KEY_UP_SHIFT, KEY_UP_2, это типа «@» и так далее.Все отлично работает на английском языке.Проблема возникает, когда мы пытаемся пометить, используя символы RTL, используя что-то вроде onView(withId(R.id.message_input_field)).perform(typeText("@פ"))
.Эспрессо не распознает символы RTL и не может генерировать ключевые события, в конечном итоге выдает java.lang.RuntimeException: Failed to get key events for string פ (i.e. current IME does not understand how to translate the string into key events)
Я пытался сделать replaceText(…)
вместо typeText(…)
, но replaceText в свою очередь выполняет editText.setText (…).но это не показывает раскрывающийся список.Странно.
Как мне написать тест интерфейса для этого сценария?
PS Не имеет значения, какой у вас язык устройства или какая клавиатура выбрана в данный момент.