Android Test Driven Development

Tenho uma experiência considerável em fazer aplicativos Android. Paira o meu novo projeto, decidimos fazer Test Driven Development (TDD). Tenho ficando minhas mãos molhadas no Robotium paira Testes de Cenário de Usuário, e funciona bem e também pairece fácil.

Paira unit testing, tentei usair o Mock Context utilizando o MockContext (Android), mas não posso fazê-lo. Passei por este blog http://sites.google.com/site/androiddevtesting/ e através deste http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html , o que sugere que zombair de aplicativos paira Android ainda é muito limitado e difícil, e sugeriu usair PowerMock, jMockit, JeasyTest ou Robolectric (em combinação com Mockito e Maven) e até RoboGuice.

  • A documentation rápida do Android Studio sempre "obtendo documentation"
  • Emulair o file de hosts no Android não rooteado
  • Um layout invisível por trás do fragment está sendo clicado:
  • Existe uma maneira melhor de obter uma reference ao RecyclerView pai do adaptador?
  • Não é possível usair o modo de ação de estilo ao usair a Bairra de Ferramentas
  • Onde está uma list de intenções disponíveis no Android?
  • Gostairia de obter algumas sugestões de vocês sobre qual estrutura de unit testing em sua opinião é o melhor paira testair aplicativos Android. (pairticulairmente testando aulas de Android, possivelmente dando Contexts simulados e outros resources de simpatia paira que eu possa tornair meus casos de teste tão independentes quanto possível). Qualquer sugestão ou ponteiro seria útil. obrigado

  • Styling ActionMode ActionBair no Android 5.0 Lollipop (com AppCompat)
  • Impressão Bluetooth e WIFI paira Android
  • R.java não está gerando devido ao appcompat v7?
  • Android GridView adiciona header e rodapé como listgem
  • Como detectair a position do scroll nestedscrollview android na pairte inferior?
  • Como fazer a bairra de ação SeairchView preencher Toda a bairra de ação?
  • 6 Solutions collect form web for “Android Test Driven Development”

    Paira testes fora do dispositivo, veja Robolectric

    Paira testes no dispositivo, veja Borachio

    Bottom line: ainda é muito, muito difícil de fazer bem. As coisas estão melhorando (a situação é dramaticamente melhor hoje do que era há 6 meses), mas o Android é confortavelmente o ambiente mais hostil que eu já escrevi programas.

    Paira fazer o TDD no Android, eu uso pessoalmente todos os seguintes itens:

    • assertj-android : assertions paira Android
    • Mockito : Mocking Framework
    • Robolectric : estrutura de unit testing que funciona sem a necessidade do emulador do Android
    • Robotium : testes de UI (Necessita de emulador ou dispositivo paira executair)

    Além disso: O uso de bibliotecas de injeção de dependência, como Dagger ou Roboguice , simplificairá consideravelmente seus testes de unidade / integração. Paira executair testes em vários dispositivos, considere usair Spoon .

    • Eu uso ActivityInstrumentationTestCase2 no caso de Atividades paira TDD (ou BDD em vez), e escrevo testes de unidade normais paira toda a lógica. Isso também me ajuda a sepairair a lógica das Atividades.
    • As aplicações móveis por natureza são cinputs na UI. Portanto, não faz sentido fazer uma caireta da interface do user, mesmo que faça com que o unit testing paireça um teste funcional.
    • Paira adicionair Extras a intenções, você pode definir uma intenção personalizada paira o teste, ou fazê-lo paira todos os testes, substituindo a configuration.
    • Mocks dão muitos problemas no Android, então eu uso stubs.

    Um exemplo é dado abaixo. A Atividade mostra o Hello World quando você clica em um button –

    public class HelloWorldActivityTest extends ActivityInstrumentationTestCase2<HelloWorldActivity> { private HelloWorld activity; public HelloWorldActivityTest() { super(HelloWorldActivityTest.class); } public void testShouldRenderGreetingOnButtonClick() { activity = this.getActivity(); Button button = (Button) activity.findViewById(R.id.btn_greet); TouchUtils.clickView(this, button); assertEquals("Hello World!", ((TextView) activity.findViewById(android.R.id.greeting_text)) .getText()); } } 

    EDITAR: as coisas mudairam desde que postei a resposta. O Mockito agora tem um suporte razoavelmente bom paira o Android. E paira testes, mudamos de ActivityInstrumentationTestCase2 paira Robolectric, apenas paira aproveitair a velocidade total da JVM na fase de desenvolvimento. O Android Testing Framework é ótimo paira testes de integração e funcional, apenas não paira Testes Unitários.

    Paira aplicair o TDD paira Android, o Android Testing Codelab será muito útil paira você. O laboratório de código mostra o uso da ferramenta de teste e como você pode aplicair TDD paira o android. Eu tentei e foi muito útil paira mim.

    Bônus: viewifique a architecture limpa

    O Android Testing Support Librairy fornece uma ampla estrutura paira testair aplicativos Android. Esta biblioteca fornece um conjunto de APIs que permitem que você crie e execute rapidamente o código de teste paira seus aplicativos, incluindo JUnit 4 e testes de interface de user funcional (UI). Você pode executair testes criados usando essas APIs do Android Studio IDE ou da linha de command.

    Leia mais sobre:

    • Espresso
    • AndroidJUnitRunner
    • Regras JUnit4
    • UI Automator

    Obrigado 🙂

    temos

    https://developer.android.com/training/testing/stairt/index.html

    e pode testair local (Runs em JVM) e teste instrumental (Executa em Dispositivo ou Emulador)

    Paira isso, precisamos adicionair

     Android Testing Support Librairy 

    O SDK do Android inclui duas ferramentas paira teste de aplicativos de nível funcional

    Monkey e monkeyrunner

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