Archive des notes de version concernant les composants de test

AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (13/12/2018)

Version stable d'AndroidX Test 1.1.0.

  • Core
    • Mise à jour de ActivityScenario, qui prend désormais en charge les activités démarrant une autre activité.

AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (06/12/2018)

  • Core
    • Ajout d'un nouvel artefact d'extension Kotlin core-ktx incluant une API ActivityScenario.launchActivity compatible avec Kotlin.
    • Ajout d'une nouvelle API ActivityScenario permettant de lancer des activités avec des intents personnalisés.
    • Ajout d'une nouvelle API ActivityScenario permettant de recevoir un résultat d'activité.
    • Mise à jour de ActivityScenario, qui peut désormais être fermé.
  • Espresso
    • Mise à jour de withResourceNameMatcher et HumanReadables, désormais compatibles avec l'API 28.
    • Mise à jour de la description de ReplaceTextAction afin d'inclure stringToBeSet.
    • Compatibilité d'Espresso avec le mode looper suspendu de Robolectric.
  • JUnit
    • Ajout d'une nouvelle API ActivityScenarioRule permettant de lancer et fermer automatiquement une activité lors de la configuration et de la suppression du test.
    • Ajout d'un nouvel artefact d'extension Kotlin junit-ktx incluant une API ActivityScenarioRule compatible avec Kotlin.
  • Runner
    • Harmonisation du comportement de -e package et -e testFile lors de la réception de packages.
  • Vérité
    • Ajout des API BundleSubject bool, parcelable et parcelableAsType.

AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (24/10/2018)

  • Tous
    • Mise à jour de minSdkVersion, désormais défini sur la version 14, et de targetSdkVersion, désormais défini sur la version 28.
  • Espresso
    • Correction de withContentDescription afin de prendre en charge d'autres types que les chaînes.
    • Prise en charge d'Espresso sur Robolectric.
    • Problème 72798625 : Espresso ViewMatchers.withText ne fonctionne pas lorsque textAllCaps est activé.
    • Prise en charge de l'injection d'une séquence d'événements de mouvement.
  • Intents
    • Ajout d'une API en version bêta permettant de récupérer la liste des intents, pour les nouvelles assertions de vérité.
  • Runner
    • Prise en charge des applications instantanées.
    • Abandon de androidx.test.runner.AndroidJUnit4, à remplacer par androidx.test.ext.junit.runners.AndroidJUnit4.
  • Surveillance
    • Abandon de androidx.test.InstrumentationRegistry, à remplacer par androidx.test.platform.app.InstrumentationRegistry et androidx.test.core.app.ApplicationProvider.
  • AndroidTestOrchestrator
    • Mise à jour permettant de gérer la couverture de l'orchestrateur uniquement si les arguments "coverage" et "coverageFilePath" sont transmis.
    • Mise à jour permettant d'attendre le débogueur seulement lorsque -debug est défini, et non pour lister les scénarios de test ATO. Un indicateur orchestratorDebug a été ajouté pour déboguer l'orchestrateur.
  • Core
    • Ajout d'un nouvel artefact incluant de nouvelles API compatibles à la fois avec les tests en local et sur l'appareil :
      • Récupération du contexte : ApplicationProvider.
      • Contrôle du cycle de vie des activités : ActivityScenario (version bêta).
      • Compilateurs pour MotionEvent et PackageInfo.
      • Classe d'utilitaire Parcelable
  • Vérité
    • Ajout d'un nouvel artefact incluant des sujets de vérité personnalisés pour Notification, Intent, Bundle, Parcelable et MotionEvent.
  • JUnit
    • Ajout d'un nouvel artefact incluant la classe d'exécuteur JUnit androidx.test.ext.junit.runners.AndroidJUnit4 compatible avec les tests en local et sur l'appareil.

Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (16/04/2018)

  • Espresso
    • Modification destructive de l'API :
      • Problème 64062890 : il nous a été signalé que nous utilisions Guava Optional dans notre API publique. C'est une terrible erreur de notre part. Par conséquent, nous avons introduit une modification destructive de l'API publique dans cette version. Nous avons ajouté un wrapper peu élégant (EspressoOptional) autour de la classe Guava Optional, sous l'espace de noms "android.support.test.espresso.util". Lors de mise à jour vers la nouvelle version, les développeurs qui utilisaient l'API Guava Optional divulguée doivent modifier leurs importations et leurs références afin d'utiliser EspressoOptional. Veuillez nous excuser pour tout désagrément occasionné.
    • Les API onView() et onData() sont désormais marquées avec @CheckReturnValue pour éviter toute erreur.
    • Le fichier POM espresso-core a été corrigé pour ne plus importer la dépendance "rules", de sorte qu'elle soit récupérée par le fichier POM espresso-intents. Il s'agit d'une modification no-op pour les développeurs, car espresso-intents ne peut pas être utilisé sans espresso-core.
    • Problème 65486414 : dépendance Guava manquante dans Espresso.
    • Problème 65576174 : échec du second test provoqué par IdlingResourceRegistry.sync dans Espresso.
    • Problème 65568629 : IdlingRegistry inutilisé par Espresso.onIdle.
    • Problème 69333598 : incompatibilité entre Espresso 3.0.1 et play-services-auth:11.6.0 dans le module de bibliothèque Android.
    • Problème 64062890 : exposition du type Optional interne par l'interface AdapterViewProtocol.
    • Problème 64091847 : Espresso 3.0.0 ne doit PAS dépendre du lanceur de test.
    • Problème 73722050 : packaging de classes android.arch.{lifecycle/core} par espresso-contrib 3.0.2-alpha1.
  • Espresso-remote
    • Il s'agit d'un tout nouvel artefact. Nous avons dissocié toutes les fonctionnalités multiprocessus d'Espresso de l'artefact espresso-core. Plus claire, cette approche devrait réduire considérablement la taille globale d'espresso-core et le nombre de méthodes.
  • Runner
    • Troncature de la trace de la pile lorsqu'elle devient trop grande pour une transaction de liaison. Étant donné qu'AJUR doit signaler les échecs à AM via un IPC de liaison, nous devons veiller à ne pas dépasser la limite pour une transaction de liaison, soit 1 Mo par processus.
    • Problème 65828576 : plantage de TestRequestBuilder lors de l'exécution du test d'une classe avec @Ignore.
    • Problème 37057596 : échecs non gérés dans @BeforeClass.
  • Règles
    • Pensez à annuler les références à l'activité testée après une modification du cycle de vie. Pendant la durée du test, l'utilisateur peut désormais manipuler l'activité directement à l'aide de la référence #getActivity(). Si l'activité est terminée et relancée, la référence renvoyée par #getActivity() renverra toujours à l'instance actuelle de l'activité.
    • Problème 64389280 : GrantPermissionRule ne fournit pas WRITE_EXTERNAL_STORAGE.
    • Problème 37065965 : ActivityTestRule provoque la fuite de l'activité après un changement d'orientation.
    • Problème 75254050 : ActivityTestRule ne met pas à jour l'instance Activity après une modification de la configuration.
    • Problème 64464625 : impossible d'effectuer les opérations d'interface utilisateur avec la méthode finish() de Activity.
  • AndroidTestOrchestrator
    • Transmettez les indicateurs -e coverage true -e coverageFilePath /sdcard/foo/ pour générer des fichiers de couverture à l'emplacement indiqué (l'application doit être autorisée à écrire dans cet emplacement). Désormais, les fichiers de couverture se nomment comme suit : com.foo.Class#method1.ec. Notez que cette option n'est disponible que pour une exécution en mode isolé. En outre, elle ne peut pas être combinée avec l'indicateur coverageFile d'AndroidJUnitRunner étant donné que les fichiers de couverture générés s'écrasent les uns les autres.
    • Transmettez l'indicateur -e clearPackageData si vous souhaitez que l'orchestrateur exécute les commandes pm clear context.getPackageName() et pm clear targetContext.getPackageName() entre les appels de test. Le contexte de la commande clear correspond à l'application dans le contexte du test.
    • Correction d'un problème : lors d'un test vide (aucun @Test dans la cible), le résultat du test est différent par rapport à l'ancien mode.
    • Problème 72758547 : les données de couverture JaCoCo sont incomplètes avec Test Orchestrator, car elles ne contiennent que les données du dernier test.
    • Problème 67916042 : Android Test Orchestrator : l'exécution s'est arrêtée sur le plantage du processus à cause d'une mémoire insuffisante.
    • Problème 77752735 : Orchestrator plante pour TransactionTooLargeException.
    • Problème 77549481 : Test Orchestrator doit exécuter "pm clear" après chaque test.

Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05/12/2017)

  • Espresso

    • Mise à jour de Intents, qui dispose désormais d'une réponse pouvant être appelée, ce qui permet aux tests de s'exécuter après avoir capturé un intent déclenché, mais avant de renvoyer un objet Instrumentation.ActivityResult.
  • Runner

    • Séparation de l'artefact Maven de surveillance com.android.support.test:monitor:<version>, pour les utilisateurs ayant besoin de MonitoringInstrumentation sans fonctionnalités JUnit et d'exécution de test.

      Si vous utilisez com.android.support.test:runner:<version>, tout fonctionne comme prévu, car Gradle extrait automatiquement le module monitor en tant que dépendance du module runner.

    • Ajout de l'indicateur newRunListenerOrderMode. Lorsque la valeur est true, les écouteurs définis par l'utilisateur s'exécutent avant les écouteurs par défaut. (Ce comportement devrait devenir le comportement par défaut.)

    • Problème 65828576 : TestRequestBuilder plante lors de l'exécution de tests dans une classe annotée avec @Ignore (de manière autonome sans fonctionnalités JUnit ou d'exécution de test).

  • AndroidTestOrchestrator

    • Mise à jour permettant de gérer les tests vides comme un AndroidJUnitRunner non orchestré.
    • Orchestrator peut désormais gérer un résultat standard très volumineux provenant de AndroidJUnitRunner.

Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28/08/2017)

  • Espresso

    • Ajout d'une option IdlingPolicy permettant de supprimer onTimeout() lorsqu'un débogueur d'étapes est associé à la VM.
    • Problèmes 64024656, 64247586 et 64525881 : absence de signalement des échecs de chargement de classe, sauf si un utilisateur charge des classes spécifiques en incluant l'argument d'exécuteur de classe -e.
    • Problème 64877246 : ajout de classes manquantes au fichier JAR des sources.
  • Runner

    • Simplification de la logique ShardingFilter.
    • Problème 65025743 : prise en charge des émulateurs FTL par le filtre @RequiresDevice.
  • AndroidTestOrchestrator

    • Correction du problème où un échec était signalé deux fois. Désormais, lorsqu'un processus de test plante, un seul échec est signalé.
    • Correction de Javadoc pour Orchestrator.
    • Mise à jour des tests, désormais signalés comme manqués suite au plantage du processus à distance.
    • Prise en charge des scénarios de test ignorés.
    • Exclusion des scénarios de test ignorés du pied de page pour mettre en correspondance les anciens résultats.
    • Correction des problèmes d'autorisation d'exécution. Les rapports de test sont désormais écrits sur la carte SD sous Android 7.0 (niveau d'API 24) ou version ultérieure.

Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25/07/2017, annonce)

Modifications destructives

  • Tous les artefacts
    • Fin de la prise en charge des niveaux d'API inférieurs à 15. Toutefois, le SDK minimal pointe toujours vers le niveau d'API 9 pour laisser le temps aux utilisateurs d'effectuer la mise à niveau.
  • Espresso
    • Suppression et déplacement de la classe android.support.test.espresso.contrib.CountingIdlingResource, devenue obsolète, vers android.support.test.espresso.idling.CountingIdlingResource
    • Guava est désormais stocké au format JAR dans un autre espace de noms "interne". Si vous utilisez accidentellement l'API Guava via des espaces de noms Espresso, vous constaterez peut-être des dysfonctionnements.
      • Supprimez toutes les références à Shaded Guava (.core.deps.guava.).
      • Mettez à niveau la bibliothèque Support vers la version 25.4.0 ou une version ultérieure.

Problèmes connus

  • AndroidTestOrchestrator
    • Incompatibilité avec les arguments d'exécuteur -e numShards et -e shardIndex.
    • Incompatibilité avec les tests paramétrés.

Nouvelles fonctionnalités

  • Règles
  • AndroidTestOrchestrator
    • Android Test Orchestrator propose une nouvelle façon de collecter et d'exécuter des tests, en mettant l'accent sur l'exactitude et l'isolation. Il s'agit d'un processus d'instrumentation indépendant qui génère un processus d'exécution d'instrumentation pour chaque test et collecte les résultats.
      • Si l'application plante, l'instrumentation de l'exécuteur est supprimée, mais pas l'orchestrateur, ce qui permet de poursuivre la suite de tests.
      • Nécessite l'installation de l'APK d'orchestrateur 'com.android.support.test:orchestrator:1.0.0'.
      • La version 1.0 dispose uniquement d'une interface de ligne de commande. Android Studio et Firebase Test Lab seront intégrés ultérieurement.

Correction de bugs

  • Espresso
    • Amélioration de la synchronisation de la vue racine permettant de réduire considérablement la fragilité.
    • Correction du problème de corruption affectant IdlingResourceRegistry.
    • Amélioration de la synchronisation avec les objets IdlingResource.
    • Problème 37132680 : Espresso n'attend pas la fin de la création de la boîte de dialogue pour effectuer l'action suivante.
    • Problème 37103280 : Espresso devrait fournir les règles ProGuard aux consommateurs pour leur éviter de les ajouter.
    • Problème 37094726 : les intents Espresso contiennent un libellé d'application inutile.
    • Problème 37093953 : Espresso ne propose aucune vérification pour les textes d'erreur nuls/vides.
    • Problème 37071776 : espresso-core intègre les fichiers .pom de Guava.
    • Problème 37062612 : exception NPE dans release().
    • Problème 37063389 : échec de compilation avec Guava et espresso-web comme dépendances androidTest.
    • Problème 37070533 : prise en charge de NavigationView dans la bibliothèque Support Design Android.
  • Exécuteur
    • Correction permettant d'utiliser @UiThreadTest avec @Test(timeout = 123).
    • Correction de l'argument d'exécuteur -e notClass.
    • Correction de -e log afin de prendre en charge les suites de test JUnit3 et JUnit4, ainsi que les exécuteurs Parameterized et Enclosed.
    • Problème 37663530 : attendez que toutes les activités se terminent avant et après chaque méthode de test.
    • Problème 37132680 : Espresso n'attend pas la fin de la création de la boîte de dialogue pour effectuer l'action suivante.
    • Problème 37123213 : @RequiresDevice est ignoré sur l'ABI x86_64.
    • Problème 37101485 : certains arguments fournis par le fichier manifeste pour AndroidJUnitRunner, tels que la taille du test, l'annotation et le débogage, sont ignorés.
    • Problème 37082857 : échec de l'exécution des tests semi-parallèles Espresso sur les objets statiques.
    • Problème 37063396 : le contexte n'est pas initialisé avec ProviderTestCase2 (ce qui génère NullPointerException).

Autres changements notables

  • Mise à jour : les binaires sont désormais publiés via Google Maven.
  • Réduction de la taille des fichiers JAR espresso-core et espresso-web : ProGuard est désormais appliqué aux dépendances intégrées.
  • Mise à jour : tous les fichiers .aar incluent désormais les règles ProGuard.
  • Ajout de fichiers proguard_library.cfg aux artefacts publiés.
  • Mise à jour de l'interface Tapper, qui permet désormais d'implémenter une nouvelle version de sendTap().

Contributions externes

Espresso 2.2.2, Runner/Rules 0.5 (22/02/2016, version silencieuse)

Nouvelles fonctionnalités

  • espresso
    • Problème 194253 : prise en charge de NavigationView dans la bibliothèque Support Design Android.
    • Ajout de vérifications pour les animations et les transitions activées.
    • Ajout d'une nouvelle API ViewMatcher : withResourceName().

Correction de bugs

  • espresso
    • Problème 195331 : espresso-core intègre les fichiers POM de Guava.
    • Suppression de CountingIdlingResource dans espresso-contrib.
  • rules
    • Problème 187249 : exception NPE dans Intents.release().
  • runner
    • Problème 196066 : l'argument -e log true dans AndroidJUnitRunner ne contourne pas le test réel.
    • Mise à jour qui impose d'attendre le débogueur dans la méthode onCreate() de l'exécuteur.
    • Déplacement de toutes les annotations de test compatibles de la plate-forme vers ATSL.
    • Suppression du fichier de vidage de la trace de la pile concernant l'absence de JSBridge.
    • Correction de AndroidAnnotatedBuilder.

Autres changements notables

  • Mise à jour de ActivityTestRule, UiThreadTestRule, IntentsTestRule et ServiceTestRule, qui ne sont plus en version bêta.
  • Ajout d'un fichier de paramètres de style afin d'unifier la mise en forme du code.

Espresso 2.2.1, Runner/Rules 0.4 (15/09/2015)

Nouvelles fonctionnalités

  • rules
    • Ajout d'un nouveau constructeur IntentsTestRule pour une compatibilité totale avec ActivityTestRule.
  • runner
    • Ajout d'une installation multidex spéciale pour l'API niveau 15 et inférieur.
    • Ajout de filtres d'exclusion à la classe et au package :
      • Exécuter tous les tests, sauf ceux d'une classe particulière : adb shell am instrument -w -e notClass com.android.foo.FooTest
      • Exécuter tous les tests, sauf un test particulier : adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
      • Exécuter tous les tests, sauf ceux d'un package particulier : adb shell am instrument -w -e notPackage com.android.foo.bar

Contributions externes

  • espresso
    • 157911 : ajout d'un outil de mise en correspondance des vues pour le type d'entrée sur un objet EditText.
    • 157912 : ajout d'un outil de mise en correspondance des vues pour faire correspondre le texte d'erreur sur un objet EditText.
    • 150674 : prise en charge de DrawerActions pour les panneaux à gravité arbitraire.
    • 150744 : DrawerActions ne provoque plus la fuite de parentListener.
    • 153303 : spécification de la gravité dans les vérifications permettant de contrôler si le panneau est ouvert ou fermé.
    • 157910 : ajout de fabriques d'action d'ouverture et de fermeture DrawerLayout.

Correction de bugs

  • espresso
    • Mise à jour de ViewActions.closeSoftKeyboard(), qui garantit désormais que le clavier virtuel a complètement disparu.
    • Correction du problème de synchronisation avec la méthode Espresso.pressBack() d'Espresso au niveau d'API 21 ou ultérieur.
    • Correction du problème de synchronisation des animations de fermeture du clavier au niveau d'API 23.
  • rules
    • Correction de ServiceTestRule au niveau d'API 23 : startService() doit toujours être appelé avec un Intent explicite.
  • runner
    • Correction du problème de compatibilité avec le Gradle JaCoCo.
    • Correction du problème de compatibilité avec la segmentation des tests.
    • Correction de l'état incohérent dans le lanceur de test après expiration du test de style JUnit3.

Autres changements notables

  • Correction de problèmes affectant Javadoc et amélioration des messages d'erreur.
  • Mise à jour permettant d'ignorer les méthodes suite() et de ne pas ignorer les erreurs d'initialisation avec les filtres de méthode.

Espresso 2.2/ATSL 0.3 (09/06/2015)

Nouvelles fonctionnalités

  • espresso-web 2.2
    • Prise en charge de WebView.
  • espresso-core 2.2
    • Migration afin d'utiliser Dagger 2.
    • Migration afin d'utiliser Hamcrest 1.3.
  • espresso-contrib 2.2
    • Vérifications de l'accessibilité.
    • Prise en charge de la gravité dans les DrawerActions.
  • rules 0.3
    • Ajout de la règle DisableOnAndroidDebug.
  • runner 0.3
    • Mise à niveau de la version 4.10 de JUnit vers la version 4.12.
    • Migration afin d'utiliser Hamcrest 1.3.

Correction de bugs

  • Correction de DrawerActions qui provoque la fuite de ParentListener.
  • Mise à jour : une hypothèse qui a échoué est désormais considérée comme un test à ignorer, et non plus comme un test en échec.
  • Correction de MonitoringInstrumentation qui provoque la fuite d'instances d'activité via ExecutorService.
  • Correction du problème concernant les activités orphelines bloquées à l'étape Stopped.
  • Mise à jour de Until.scrollFinished() afin de renvoyer la valeur "true" si aucun événement de défilement n'a été généré. Protection contre une exception NPE potentielle dans UiObject2#setText().

Espresso 2.1, Test Runner/Rules 0.2 et UIAutomator 2.1.0 (21/04/2015)

Modifications destructives

  • Séparation de l'artefact du lanceur de test en deux : com.android.support.test:testing-support-lib:0.1 devient com.android.support.test:runner:0.2 et com.android.support.test:rules:0.2.

Nouvelles fonctionnalités

  • espresso-intents : ajout d'une API de type Mockito qui permet d'effectuer des tests hermétiques entre activités en offrant la possibilité à leurs auteurs de vérifier et boucher les intents sortants.
    • IntentsTestRule : extension de ActivityTestRule qui initialise et libère Espresso-Intents dans les tests d'interface utilisateur fonctionnels.
  • espresso-core
    • ViewActions : ajout d'une fonctionnalité permettant d'exécuter des assertions globales avant des actions. C'est utile pour d'autres frameworks qui s'appuient sur Espresso pour valider l'état de la hiérarchie des vues pendant l'exécution de la suite de tests Espresso existante.
    • Surcharge de ViewMatchers.withContentDescription() resId.
  • rules
    • ActivityTestRule : cette règle permet de tester le fonctionnement d'une seule activité.
    • Annotations UiThreadRule et UiThreadTest : cette règle permet à la méthode de test annotée avec UiThreadTest de s'exécuter sur le thread principal (ou thread UI) de l'application.
    • ServiceTestRule : cette règle permet de tester le fonctionnement d'un service.
  • runner
    • ApplicationLifecycleCallback : rappel permettant de surveiller les événements de cycle de vie de l'application.
    • Mise à jour des arguments d'exécuteur, qui peuvent tous être spécifiés désormais dans le fichier manifeste Android à l'aide d'une balise <meta-data>.
  • UIAutomator
    • Mise à jour de UiDevice.dumpWindowHierarchy(), qui accepte désormais un File ou un OutputStream.

Correction de bugs

  • espresso
    • Mise à jour de l'outil de mise en correspondance du curseur, qui renvoie désormais false si la colonne est introuvable, afin que Hamcrest puisse passer au curseur suivant.
    • Suppression de l'exception NullPointerException avec PreferenceMatchers withTitle.
    • Mise à jour d'Espresso, qui ne considère plus comme occupée une ressource d'inactivité dont l'enregistrement a été annulé.
    • Mise à jour de la version de la bibliothèque Support Annotations utilisée par Espresso Contrib.
  • runner
    • Mise à jour de AndroidJUnit4, qui ignore désormais les tests avec des hypothèses en échec.
  • UIAutomator
    • Exécution d'observateurs pour empêcher StaleObjectException.

Autres changements notables

  • Amélioration du message d'erreur lorsque l'action typeText est impossible avec une chaîne de caractères non latins.

UIAutomator 2.0 (12/03/2015)

UI Automator est maintenant basé sur l'instrumentation Android. Vous pouvez créer et exécuter des tests à l'aide de la commande ./gradlew connectedCheck.

Espresso version 2.0, Test Runner 0.1 (date de publication : 19/12/2014)

Modifications destructives

  • Déplacement d'Espresso de l'espace de noms android.support.test.espresso vers android.support.test.espresso.
  • Changement de noms pour les artefacts Espresso :
    • espresso-1.1.jar devient espresso-core-release-2.0.jar.
    • L'interface IdlingResource a été déplacée dans une bibliothèque distincte : espresso-idling-resource-release-2.0.jar.
    • CountingIdlingResource se trouve désormais dans espresso-contrib-release-2.0.jar (comme il aurait toujours dû).
  • Suppression de Optional (une dépendance Guava) de l'API publique pour permettre le repackaging de la dépendance Guava et éviter les conflits DEX (une difficulté majeure lors du développement). Les méthodes suivantes sont concernées :
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

Nouvelles fonctionnalités

  • Actions
    • ViewActions
      • replaceText()
      • openLink()
      • Balayage vers le haut et vers le bas
    • espresso-contrib
      • RecyclerViewActions : gère les interactions avec RecyclerViews.
      • PickerActions : gère les interactions avec les sélecteurs Date et Time.
  • Outils de mise en correspondance
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers : outils de mise en correspondance pour les tests de mise en page liés à i18n.
    • CursorMatchers : ensemble d'outils de mise en correspondance pour les objets Cursor.
  • Assertions
    • PositionAssertions, y compris isLeftOf() et isAbove() : ensemble de ViewAssertions pour vérifier la position relative des éléments à l'écran.
    • LayoutAssertions : assertions pour les tests de mise en page liés à i18n.
  • Application de test : nombreux nouveaux exemples d'activités et de tests.
  • Autre
    • Espresso.unregisterIdlingResources() et Espresso.getIdlingResources() : apporte une flexibilité supplémentaire lors de l'utilisation des IdlingResources.
    • ViewInteraction.withFailureHandler() : permet de remplacer le gestionnaire d'échecs depuis onView().
    • Prise en charge de onData() pour AdapterViews avec CursorAdapters.

Correction de bugs

  • Correction de ViewMatchers.isDisplayed() pour faire correspondre les vues qui occupent tout l'écran, mais qui ne sont plus affichées à moins de 90 %.
  • Correction afin que l'appel d'une action de balayage pour DrawerActions.openDrawer() ne génère plus d'exception IdlingResourceTimeoutException.

Autres changements notables

  • Migration de Maven à Gradle pour la compilation.
  • Retrait des dépendances Espresso (Guava, Dagger, Hamcrest) afin d'éviter les conflits DEX.
  • Modification afin de renvoyer un échec ou une réussite lors de l'enregistrement et de l'annulation de l'enregistrement des ressources d'inactivité.
  • Compatibilité avec Lollipop : message.recycle() placé derrière une interface pour tenir compte des modifications liées à la version.
  • Migration vers le niveau de SDK cible 21, modification affectant principalement l'application de test.

Version 1.1 (date de publication : 08/01/2014)

Espresso

  • Ajout des ViewActions swipeLeft et swipeRight.
  • Prise en charge du mode multifenêtre, une fonctionnalité avancée qui permet de choisir la fenêtre cible sur laquelle Espresso doit exécuter l'opération.
  • Améliorations apportées à TypeTextAction : possibilité de saisir du texte dans une vue présélectionnée, ce qui facilite l'ajout de texte.
  • Nombreuses corrections de bugs

Bibliothèque Espresso Contrib

  • Cette nouvelle bibliothèque contient des fonctionnalités qui complètent Espresso, mais qui ne font pas partie de la bibliothèque principale.
  • Ajout de DrawerActions pour DrawerLayout : dépend de la bibliothèque Android Support. Par conséquent, nous le conservons en dehors de la bibliothèque Espresso principale.

Exemples de tests

  • Ces tests ont été déplacés dans le même package que l'application de test.
  • Les fichiers POM Maven ont été corrigés afin de supprimer les dépendances Guava en double. mvn install devrait donc fonctionner désormais.