Android Test: UIAutomator vs Espresso

Eu estava procurando por frameworks de teste paira a automation de UI do Android e eu tropecei com o UI Automator e o Espresso e essa é a pairte em que eu estou confuso –

  1. Ambos são mantidos pelo Google
  2. Ambos são usados ​​paira testes funcionais de UI
  3. Ambos são frameworks do Android apenas

Então, minhas perguntas / dúvidas aqui são –

  • Passando pairâmetros de uma atividade java paira o aplicativo Adobe AIR
  • Opção paira enviair sms usando Sim1 ou Sim2 programaticamente
  • O text não é um elipsismo
  • Dp é o mesmo que mergulhair?
  • Bloqueair / desbloqueair um aplicativo da minha aplicação: Android
  • Como combinair várias imagens em uma única image no Android?
    • Qual a principal diferença entre UI Automator e Espresso ?
    • Será que o código fonte deve ser modificado paira integrair qualquer um desses frameworks?
    • Um quadro possui alguma vantagem sobre o outro? Se sim, qual estrutura é a mais adequada paira a automation UI de um aplicativo paira Android?

  • Unicidade do dispositivo móvel paira iOS e Android
  • Posicionamento da trava do traçado do Android
  • Revisão tairdia do Android webview
  • set_metadata_recursive crashndo na installation do Android
  • Como redirect minha saída de log do logcat paira o cairtão SD em um dispositivo Android?
  • Desenhe text sobre esfera no libgdx
  • 7 Solutions collect form web for “Android Test: UIAutomator vs Espresso”

    UIAutomator – é poderoso e possui boa integração de operating system externo, por exemplo, pode ativair e desativair o WiFi e acessair outras configurações durante o teste, mas não tem compatibilidade com viewsões anteriores, pois requer Jelly Bean ou superior. Mas, também não tem access detalhado à visualização, então pode-se dizer que pode ser mais um teste puro de checkbox preta. Onde o Espresso tem access paira exibir internals (veja abaixo). Isso é recomendado em developer.android.com paira "Testair UI paira vários aplicativos"

    Espresso – é um pouco mais leve em compairação com ui automator e suporta 2.2 Froyo e ele também tem uma api fluente com integração poderosa hamcrest ( https://github.com/hamcrest ) tornando o código mais legível e extensível (é mais recente do que Ui automador). Não tem access aos testes de integração do sistema, mas tem access paira exibir internas, por exemplo, pode testair uma visualização web (útil paira o teste de aplicativos híbridos ou teste pesado na Web). Um pouco mais testes de checkbox cinza em compairação com UI Automator. Isso é recomendado em developer.android.com paira "Testair UI paira uma única aplicação". A pairtir do Android Studio 2.2, isso agora oferece UI teste de gravação (como UIAutomator)

    Na viewdade, você não precisa escolher. UIAutomator e Espresso usam o mesmo corredor de instrumentação, paira que você possa usair commands de ambos em um único teste. Espresso tem vairiedade de correspondentes, asserções e ações na UI, que o automador não possui:

    Espresso 2.1 Cheat Sheet

    O Espresso está sendo executado em um fio sepairado e é realmente rápido compairando com outros frameworks de teste.

    como Resumo: use ambos nos testes, o Espresso é o principal e o UIAutomator como uma ferramenta adicional paira a integração do operating system.

    Se você estiview testando apenas um aplicativo, então o Espresso.

    Se você estiview testando mais de um aplicativo ou sua integração com outros aplicativos ou sistema, então UiAutomator.

    Encontrei um airtigo interessante, que fala sobre por que você deviewia usá-los. Dê uma olhada em:

    http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

    Já o Espresso é suficiente paira mim, mas por algumas razões, como testair notifications de aplicativos, em poucas semanas aprendendo uiautomator .

    Gaste algum tempo paira

    • Verifique os exemplos do Google de usair esses frameworks:

    https://github.com/googlesamples/android-testing/tree/master/ui

    • leia uma documentation desses frameworks:

    http://developer.android.com/training/testing/ui-testing/espresso-testing.html

    http://developer.android.com/training/testing/ui-testing/uiautomator-testing.html

    Ao usair o UIAutomator, você deve usair uma API de 18+ enquanto estiview com o Espresso, você pode ir tão baixo quanto a API 8.

    Como afirma a documentation do Android, os testes multi-aplicativo devem ser feitos com UIAutomator, enquanto você deseja que os testes sejam executados dentro do seu próprio package de aplicativos, você pode usair o Espresso.

    Na pairte inferior da página desta documentation , você pode encontrair a introdução, bem como exemplos paira ambos os styles de teste.

    Paira obter uma noção rápida de como ambas as coisas funcionam, vamos dair um exemplo. Vamos tentair encontrair e clicair em um button com o título "Iniciair" no Lollipop usando UIAutomator e Espresso :

    • UIAutomator : você precisa procurair o "START" maiúsculo porque, nos botões Lollipop, são renderizados em maiúsculas. device.findObject(new UiSelector().text("START")).click();
    • Espresso : Você usairia apenas R.string.stairt e não precisairia se importair com a forma como a cadeia é realmente renderizada pela plataforma. Você não se importa se a exibição tem textAllCaps=true ou é elipsada. onView(withText(R.string.stairt)).perform(click());

    TL: DR;

    O UIAutomator procura visualizações em estilo de nível inferior ao Espresso – através do mecanismo de instrumentação e atravessando a tree AccessibilityNodeInfo da hierairquia de exibição. O expresso, por sua vez, atravessa tipicamente a própria hierairquia de visão.

    Um dos principais benefícios do uso do Espresso é que ele fornece synchronization automática de ações de teste com a UI do aplicativo que você está testando. O Espresso detecta quando a thread principal está ociosa, por isso é capaz de executair seus commands de teste no momento apropriado, melhorando a confiabilidade de seus testes. Esta capacidade também o impede de adicionair quaisquer soluções temporárias, como Thread.sleep () no seu código de teste.

    A estrutura de teste Espresso é uma API baseada em instrumentação e funciona com o corredor de teste AndroidJUnitRunner.

    Fonte: https://developer.android.com/training/testing/ui-testing/espresso-testing.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.