Robolectric es el marco de pruebas unitarias estándar de la industria para Android. Con Robolectric, sus pruebas se ejecutan en un entorno Android simulado dentro de una JVM, sin la sobrecarga y la inestabilidad de un emulador. Las pruebas Robolectric se ejecutan habitualmente 10 veces más rápido que las de emuladores arrancados en frío.
Robolectric admite la ejecución de pruebas unitarias para 15 versiones diferentes de Android, desde Lollipop (nivel de API 21) hasta V (nivel de API 35).
A continuación se muestra un ejemplo de una prueba sencilla escrita con 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 obtener más información sobre cómo instalar y utilizar Robolectric en su proyecto, ampliar su funcionalidad y unirse a la comunidad de contribuyentes, visite robolectric.org.
Si desea comenzar un nuevo proyecto con pruebas de Robolectric, puede consultar deckard
(ya sea para Maven o Gradle) como guía para configurar Android y Robolectric en su máquina.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric está construido con Gradle. Tanto Android Studio como IntelliJ pueden importar el archivo build.gradle.kts
de nivel superior y generarán automáticamente sus archivos de proyecto a partir de él.
Para poner en funcionamiento Robolectric en su máquina, consulte esta guía.
Para obtener una descripción general de alto nivel de la arquitectura de Robolectric, visite robolectric.org.
Robolectric se desarrolla activamente en varios lugares. La ubicación principal es este repositorio de GitHub, que se considera la fuente de verdad del código de Robolectric. Es donde se producen las contribuciones de la comunidad más amplia de desarrolladores de Android. También hay un árbol de desarrollo activo de Robolectric internamente en Google, donde se producen contribuciones de desarrolladores propios de Android. Al tener un árbol de desarrollo de Robolectric internamente en Google, permite a los desarrolladores propios de Android realizar contribuciones a Robolectric de manera más eficiente. Este árbol se sincroniza directamente con la rama google
cada vez que se produce un cambio mediante la herramienta de sincronización de código Copybara
. Las fusiones bidireccionales de esta rama y la rama master
se producen periódicamente.
Robolectric también se utiliza en la plataforma Android a través del proyecto de repositorio externo/robolectric. Las contribuciones a este árbol de fuentes suelen estar relacionadas con la compatibilidad con nuevos SDK y las API de plataformas en evolución. Los cambios de esta rama se transmiten al árbol interno de Robolectric en Google, que eventualmente se propaga a las ramas de GitHub.
Aunque complejo, este modelo de desarrollo distribuido permite a los desarrolladores de Android en diferentes entornos utilizar y contribuir a Robolectric, al tiempo que permite que los cambios lleguen eventualmente a las versiones públicas de Robolectric.
Si desea vivir a la vanguardia, puede intentar ejecutar una versión instantánea. Tenga en cuenta que las instantáneas representan los cambios más recientes en el master
y pueden contener errores.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}