UI para vários aplicativos

O Android oferece suporte a testes de interface de usuário que envolvem mais de um aplicativo. Vamos considerar que nosso aplicativo tem uma opção de mudar de nosso aplicativo para um aplicativo de mensagens para enviar uma mensagem e depois voltar para nosso aplicativo. Nesse cenário, a estrutura de teste do automatizador de IU nos ajuda a testar o aplicativo. O automatizador de IU pode ser considerado um bom companheiro para a estrutura de teste do espresso. Podemos explorar a opção intending () na estrutura de teste do espresso antes de optar pelo automatizador de IU .

Instrução de configuração

O Android fornece o automatizador de IU como um plugin separado. Ele precisa ser configurado no app / build.gradle conforme especificado abaixo,

dependencies {
   ...
   androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

Fluxo de trabalho para escrever casos de teste

Vamos entender como escrever um caso de teste baseado no UI Automator ,

  • Obtenha o objeto UiDevice chamando o método getInstance () e passando o objeto Instrumentation .

myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
  • Obtenha o objeto UiObject usando o método findObject () . Antes de usar este método, podemos abrir o aplicativo uiautomatorviewer para inspecionar os componentes de IU do aplicativo de destino, pois compreender o aplicativo de destino nos permite escrever casos de teste melhores.

UiObject button = myDevice.findObject(new UiSelector()
   .text("Run")
   .className("android.widget.Button"));
  • Simule a interação do usuário chamando o método UiObject . Por exemplo, setText () para editar um campo de texto e clique () para disparar um evento de clique de um botão.

if(button.exists() && button.isEnabled()) {
   button.click();
}
  • Finalmente, verificamos se a IU reflete o estado esperado.