Robolectric é a estrutura de teste de unidade padrão da indústria para Android. Com o Robolectric, seus testes são executados em um ambiente Android simulado dentro de uma JVM, sem a sobrecarga e a instabilidade de um emulador. Os testes robolétricos são executados rotineiramente 10 vezes mais rápido do que aqueles em emuladores iniciados a frio.
Robolectric oferece suporte à execução de testes de unidade para 15 versões diferentes do Android, variando de Lollipop (API de nível 21) a V (API de nível 35).
Aqui está um exemplo de um teste simples escrito usando Robolectric:
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
Para obter mais informações sobre como instalar e usar o Robolectric em seu projeto, ampliar sua funcionalidade e ingressar na comunidade de colaboradores, visite robolectric.org.
Se quiser iniciar um novo projeto com testes Robolectric, você pode consultar o deckard
(para Maven ou Gradle) como um guia para configurar o Android e o Robolectric em sua máquina.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric é construído usando Gradle. Tanto o Android Studio quanto o IntelliJ podem importar o arquivo build.gradle.kts
de nível superior e gerar automaticamente seus arquivos de projeto a partir dele.
Para colocar o Robolectric em funcionamento em sua máquina, consulte este guia.
Para obter uma visão geral de alto nível da arquitetura do Robolectric, visite robolectric.org.
Robolectric é desenvolvido ativamente em vários locais. O local principal é este repositório GitHub, que é considerado a fonte da verdade para o código Robolectric. É onde ocorrem as contribuições da comunidade mais ampla de desenvolvedores Android. Há também uma árvore de desenvolvimento ativa do Robolectric internamente no Google, onde ocorrem contribuições de desenvolvedores Android próprios. Por ter uma árvore de desenvolvimento do Robolectric internamente no Google, ele permite que desenvolvedores Android próprios façam contribuições para o Robolectric com mais eficiência. Esta árvore é sincronizada diretamente com a ramificação google
sempre que ocorre uma alteração usando a ferramenta de sincronização de código Copybara
. As mesclagens bidirecionais desta ramificação e da ramificação master
ocorrem regularmente.
Robolectric também pode ser usado na plataforma Android por meio do projeto de repositório externo/robolectric. As contribuições para esta árvore de origem geralmente estão relacionadas ao novo suporte do SDK e às APIs da plataforma em evolução. As alterações desta ramificação são enviadas para a árvore Robolectric interna do Google, que eventualmente se propaga para as ramificações do GitHub.
Embora complexo, esse modelo de desenvolvimento distribuído permite que desenvolvedores Android em diferentes ambientes usem e contribuam com o Robolectric, ao mesmo tempo que permite que as mudanças eventualmente cheguem aos lançamentos públicos do Robolectric.
Se você gostaria de viver no limite, você pode tentar executar uma construção de snapshot. Tenha em mente que os snapshots representam as alterações mais recentes no master
e podem conter bugs.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}