Sou novo no mundo dos testes e ainda mais no mundo dos testes do Android. Ao fazer uma pesquisa sobre Robolectric que ajuda em testes no Android, uma coisa me confunde mais. Às vezes, na web, vejo pessoas usando testCompile
palavras-chave nas dependências do script de compilação do Gradle ao fazer referência ao Robolectric enquanto outros usam androidTestCompile
. Certamente ambos não podem ser válidos?
Alguém pode explicar a diferença entre os dois e qual deles deve ser usado ao usar o Robolectric?
testCompile
configuração. As dependências adicionadas àandroidTestCompile
configuração estarão disponíveis apenas para a fonte em 'src / androidTest', que na verdade é integrado a um APK e implantado em um dispositivo.Para responder à sua pergunta - Use testCompile for robolectric
porque, porque o robolectric é executado na JVM, simulando todo o comportamento do dispositivo Android.
testCompile e androidTestCompile são pastas do Android "por convenção" que o Gradle usa ao executar tarefas fornecidas pelo plug-in android.
androidTestDebug seleciona testes da pasta androidTest, testDebug seleciona testes da pasta de teste,
Novamente, estas são apenas pastas de convenção; você pode fornecer conjuntos de fontes para essas configurações
Nota: espresso é uma biblioteca incrível, tente se afastar do robolectric :)
fonte
// teste de unidade
O código acima é uma dependência do JUnit 4 no arquivo build.gradle no android studio. Você vê que ele tem testCompile, porque JUnit roda em JVM e não requer um dispositivo ou emulador para rodar. Isso também significa que os testes JUnit não exigirão que o contexto do aplicativo seja executado e, se eles exigirem, precisaremos "MOCK" eles.
// Teste de Unidade Insturmented
Agora vemos androidTestCompile aqui, pois desta vez pretendemos usar o dispositivo ou emulador para testes, ou seja, testes de Instrumentação. Para um melhor esclarecimento, sugiro ler em developer.android.com
fonte
Para adicionar Dependência para teste JVM ou teste de Unidade (os testes dependem apenas do ambiente java, não precisamos de nenhum ambiente Android).
Usamos a diretiva testCompile. Exemplo:
Para adicionar o teste de Dependência para Instrumentação (esses testes dependem principalmente do ambiente Android), usamos a
androidTestCompile
diretiva.fonte