Robolectric est le cadre de tests unitaires standard de l'industrie pour Android. Avec Robolectric, vos tests s'exécutent dans un environnement Android simulé au sein d'une JVM, sans la surcharge et la fragilité d'un émulateur. Les tests robotiques s'exécutent régulièrement 10 fois plus rapidement que ceux des émulateurs démarrés à froid.
Robolectric prend en charge l'exécution de tests unitaires pour 15 versions différentes d'Android, allant de Lollipop (niveau API 21) à V (niveau API 35).
Voici un exemple de test simple écrit avec 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!" ));
}
}
Pour plus d'informations sur la façon d'installer et d'utiliser Robolectric sur votre projet, d'étendre ses fonctionnalités et de rejoindre la communauté des contributeurs, veuillez visiter robolectric.org.
Si vous souhaitez démarrer un nouveau projet avec des tests Robolectric, vous pouvez vous référer à deckard
(pour Maven ou Gradle) comme guide pour configurer Android et Robolectric sur votre machine.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric est construit à l'aide de Gradle. Android Studio et IntelliJ peuvent importer le fichier build.gradle.kts
de niveau supérieur et généreront automatiquement leurs fichiers de projet à partir de celui-ci.
Pour que Robolectric soit opérationnel sur votre machine, consultez ce guide.
Pour obtenir un aperçu de haut niveau de l’architecture de Robolectric, consultez robolectric.org.
Robolectric est activement développé dans plusieurs endroits. L'emplacement principal est ce référentiel GitHub, qui est considéré comme la source de vérité du code Robolectric. C’est là que se produisent les contributions de la communauté plus large des développeurs Android. Il existe également une arborescence de développement active de Robolectric en interne chez Google, où se produisent les contributions des développeurs Android propriétaires. En disposant d'une arborescence de développement de Robolectric en interne chez Google, cela permet aux développeurs Android propriétaires d'apporter plus efficacement des contributions à Robolectric. Cette arborescence est synchronisée directement avec la branche google
à chaque fois qu'une modification se produit à l'aide de l'outil de synchronisation de code Copybara
. Des fusions bidirectionnelles de cette branche et de la branche master
se produisent régulièrement.
Robolectric est également utilisé sur la plate-forme Android via le projet de dépôt externe/robolectrique. Les contributions à cette arborescence source sont généralement liées à la nouvelle prise en charge du SDK et à l'évolution des API de la plateforme. Les modifications de cette branche sont transmises en amont à l'arborescence Robolectric interne de Google, qui se propagent finalement aux branches GitHub.
Bien que complexe, ce modèle de développement distribué permet aux développeurs Android dans différents environnements d'utiliser et de contribuer à Robolectric, tout en permettant aux modifications d'aboutir éventuellement aux versions publiques de Robolectric.
Si vous souhaitez vivre à la pointe de la technologie, vous pouvez essayer d'exécuter une version d'instantané. Gardez à l'esprit que les instantanés représentent les modifications les plus récentes sur le master
et peuvent contenir des bugs.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}