2
respostas

Failed to get key events for string Usuário

olá!

Tentei utilizar o Espresso com o typeText() como indicado nessa aula, porém pelo que entendi, o Espresso não consegue utilizar o teclado para inserir caracteres com acentuação usando esse método, funciona apenas com o replaceText(). Como contornar esse problema sem utilizar o replaceText()?

Por enquanto, para passar, eu utilizarei o texto "Usuario" sem acento mesmo.

A stack trace inteira segue abaixo:

Started running tests


java.lang.RuntimeException: Failed to get key events for string Usuário (i.e. current IME does not understand how to translate the string into key events). As a workaround, you can use replaceText action to set the text directly in the EditText field.
at androidx.test.espresso.base.UiControllerImpl.injectString(UiControllerImpl.java:96)
at androidx.test.espresso.action.TypeTextAction.perform(TypeTextAction.java:28)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:16)
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:65)
at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:15)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:2)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Tests ran to completion.
2 respostas

Oi Vinicius, tudo bem ?

Cara que erro estranho estava vendo aqui e pela doc não tem nada falando isso, o que é bem bizarro.

Contudo estou pensando em outra coisa, o seu teste precisa do acento ? As vezes podemos fazer testes agnósticos à idioma, contornando o problema, mas não sei se pro seu caso isso resolve.

Fala, Matheus! Tudo certo e contigo?

Não cheguei a pesquisar na documentação e descobri isso por puro acaso mesmo, apenas fazendo o teste como estava antes. Aí tinha encontrado essa resposta no stackoverflow comentando como, aparentemente, pra contornar essa exceção só usando o replaceText() mesmo (que era o que eu estava usando antes - além de ser dito isso na própria stacktrace né).

Acabei fazendo sem acento mesmo, porque o foco não é testar a string em si e sim como o app está lidando com a entrada de texto. Como passou normal sem acento, não me preocupei muito, mas fiquei curioso se haveria outra forma de fazer esse tipo de teste com um caractere unicode.