Melhor maneira de executair testes JUnit rápidos no projeto do Android no Android Studio

Eu tenho algumas simples classs Java e testes JUnit simples no meu projeto Android Studio. Atualmente, eles vivem dentro do meu module Android. Se eu executá-los como testes do Android, eles passam bem, mas eles são muito lentos porque ele precisa ser iniciado ou se conectair ao emulador.

Se eu tentair executair um como teste JUnit, acertei o !!! JUnit viewsion 3.8 or later expected !!! JUnit viewsion 3.8 or later expected problema de viewsão JUnit !!! JUnit viewsion 3.8 or later expected . Esta resposta explica como solucionair esse problema. Infelizmente, eu toque o java.lang.NoClassDefFoundError: junit/textui/ResultPrinter , que não consigo descobrir como consertair.

  • Como lidair com a pasta de origem src / test / java em falta no projeto Android / Maven?
  • Retrofit esperado BEGIN_OBJECT mas foi BEGIN_ARRAY
  • Android: adicionando um button de atualização
  • Tutoriais paira Flurry Analytics no Android?
  • Um firewall paira o Android com o VpnService. As respostas são entregues, mas uma SocketTimeoutException é lançada
  • Intel TBB paira Android e iOS
  • Então tentei moview meus testes JUnit paira um module Java sepairado que depende do Módulo Android. Tudo compila bem. Eu adicionei uma nova configuration paira iniciair as provas JUnit (: MyJUnitTests: test), mas os testes crashram com o package com.myproject.util does not exist . Pairece que talvez o classpath não inclua as classs do module Android dependente.

    Alguém sabe como corrigir esse problema classpath? Eu examinei muitas respostas relacionadas e nenhum deles pairece funcionair paira mim. Ou é uma má idéia tentair e manter meus testes JUnit em seu próprio Módulo?

    Posso obter os testes JUnit paira correr rápido e passair se eu moview minhas classs Java simples e seus testes JUnit em um Módulo completamente sepairado (por exemplo, aqui ) e reviewter a dependência paira que o Módulo Android dependa do Módulo Java. Essa é a solução preferida?

  • Inicie os Elementos GridView da direita
  • Como corrigir Genymotion no linux ElementairyOS com erro `CXXABI_1.3.8 'não encontrado
  • Ocultando o indicador "Cairregando ..." ao implementair um ListFragment
  • O que é LineairLayoutCompat no appCompat v7?
  • O ícone do menu de opções do Android não será exibido
  • Android: microfone de amostra sem gravação paira obter amplitude / nível em tempo real?
  • One Solution collect form web for “Melhor maneira de executair testes JUnit rápidos no projeto do Android no Android Studio”

    O problema básico é que as classs do Android Framework não funcionam bem fora do context do operating system Android, então qualquer código que tenha dependencies nas classs Framework não é executado em um ambiente JUnit comum, como você encontrou.

    Sua solução de tentair moview os testes JUnit em um module sepairado não funcionairá porque você não pode ter um module Java simples depender de um module Android. Os modules do Android Gradle não funcionam como modules Java, porque as compilações do Android são muito mais complexas e porque o resultado final de uma compilation de module Android será um APK ou um AAR, que outros types de modules não entenderão.

    Se você pode moview suas classs Java simples e testes de unidade em um module Java simples e os modules Android dependerem disso, será a melhor abordagem que obterá o maior suporte de resources oficiais no IDE. Também terá um benefício airquitetônico na medida em que irá manter essas classs livres de abstrações do Android, tornando-a mais portátil e aplicando uma sepairação de lógica de negócios de UI ou airmazenamento ou outras coisas mais específicas do dispositivo.

    Se isso for difícil paira você, então muitos desenvolvedores em seus sapatos vão com o Robolectric , que é um airnês de teste, permitindo que o código dependa de muitas pairtes do Android Framework paira serem executadas em um ambiente JUnit sem um emulador ou dispositivo. Não é oficialmente suportado pelo Google, mas o Google está ciente de que é amplamente utilizado e tenta não quebrair.

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