Skip to content
acosson edited this page Jun 20, 2018 · 26 revisions

Présentation

Espresso est une API permettant de tester l’interface d’une application. Il est possible de simuler des actions utilisateur sur l’interface d’une application et ensuite de tester si le résultat d’une action est bien celui attendu en vérifiant l’état et la valeur d’affichage des différents éléments de l’interface graphique.

Espresso est l’API de base pour tester les interfaces utilisateurs, les dépendances vers l’API Espresso sont déjà présente dans Gradle au moment de la création de nouveau projet sous Android Studio. Cette API est appréciée pour sa fiabilité et sa facilité d’utilisation.

Les objectifs de ce chapitre sont les suivants :

  • Savoir mettre en place Espresso.
  • Découvrir le fonctionnement de ce type de test.

Procédure de mise en place

Pour mettre en place Espresso dans un projet il est nécessaire de suivre les étapes suivantes :

  • Définir les dépendances nécessaires
  • Définir les tests

Dépendances

Voici les dépendances nécessaires pour l'utilisation d'Espresso :

dependencies 
{
    ...
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'com.android.support.test: runner:1.0.2'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
    ...
}

Définir un test

Définir une classe de test

Pour définir un test sur une Activité avec Espresso il est tout d’abord nécessaire de créer une classe de test dans l’arborescence du dossier AndroidTest :

MainActivityTest.kt

@LargeTest
class MainActivityTest
{
   //...
}

Définir l'activité à tester dans la classe de test

Il est nécessaire de définir une JUnit Rule dans la classe de test pour définir l'activité à tester.

_MainActivityTest.kt_
@LargeTest
class MainActivityTest
{
   @Rule @JvmField val activity = ActivityTestRule<MainActivity>(MainActivity::class.java)
}

Définir un cas de test

Un cas de test est un scénario décrivant l'action d'un utilisateur avec l'application. Une classe de test doit contenir plusieurs cas de test afin de couvrir le maximum de scénarios possibles. MainActivityTest.kt

@LargeTest
class MainActivityTest
{
    @Rule @JvmField val activity = ActivityTestRule<MainActivity>(MainActivity::class.java)

    @Test
    fun testRandom()
    {
        //Clic sur l'élément avec l'id égal à 'R.id.btn_bonjour'
        onView(withId(R.id.btn_bonjour)).perform(click())
        //Regarde si l'élément avec l'id égal à 'R.id.tv_affichage' est égal à 'Bonjour'
        onView(withId(R.id.tv_affichage)).check(matches(withText("Bonjour")))
    }

Les principales fonctions pour définir un scénario

Voici la liste des principales fonction permettant de définir les scénarios de test :