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
- Ajout d'un nouvel artefact incluant de nouvelles API compatibles à la fois avec les tests en local et sur l'appareil :
- 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.
- Modification destructive de l'API :
- 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'indicateurcoverageFiled'AndroidJUnitRunner étant donné que les fichiers de couverture générés s'écrasent les uns les autres. - Transmettez l'indicateur
-e clearPackageDatasi vous souhaitez que l'orchestrateur exécute les commandespm clear context.getPackageName()etpm 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.
- Transmettez les indicateurs
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 objetInstrumentation.ActivityResult.
- Mise à jour de
Runner
Séparation de l'artefact Maven de surveillance
com.android.support.test:monitor:<version>, pour les utilisateurs ayant besoin deMonitoringInstrumentationsans 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 modulemonitoren tant que dépendance du modulerunner.Ajout de l'indicateur
newRunListenerOrderMode. Lorsque la valeur esttrue, 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 :
TestRequestBuilderplante 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
AndroidJUnitRunnernon orchestré. - Orchestrator peut désormais gérer un résultat standard très volumineux provenant de
AndroidJUnitRunner.
- Mise à jour permettant de gérer les tests vides comme un
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28/08/2017)
Espresso
- Ajout d'une option
IdlingPolicypermettant de supprimeronTimeout()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.
- Ajout d'une option
Runner
- Simplification de la logique
ShardingFilter. - Problème 65025743 : prise en charge des émulateurs FTL par le filtre
@RequiresDevice.
- Simplification de la logique
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, versandroid.support.test.espresso.idling.CountingIdlingResource- .
- Utilisez
getInstance().register()à la place deregisterIdlingResources().
- Utilisez
- 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.
- Supprimez toutes les références à Shaded Guava (
- Suppression et déplacement de la classe
Problèmes connus
- AndroidTestOrchestrator
- Incompatibilité avec les arguments d'exécuteur
-e numShardset-e shardIndex. - Incompatibilité avec les tests paramétrés.
- Incompatibilité avec les arguments d'exécuteur
Nouvelles fonctionnalités
- Espresso
- Prise en charge de Multiprocess Espresso sur l'API 26 pour
espresso-coreetespresso-web, mais pasespresso-contrib. - Ajout d'une nouvelle API
IdlingRegistrylégère- .
- Publiée dans
com.android.support.test.espresso:espresso-idling-resource:3.0.0. - Méthodes obsolètes :
- Publiée dans
- Ajout d'une nouvelle API permettant la synchronisation avec
Executors- .
- Ajout d'un nouvel artefact Maven :
com.android.support.test.espresso.idling:idling-concurrent:3.0.0. - Contient les classes
IdlingScheduledThreadPoolExecutoretIdlingThreadPoolExecutor.
- Ajout d'un nouvel artefact Maven :
- Ajout d'une nouvelle API permettant la synchronisation avec les requêtes et les réponses réseau.
- Ajout d'un nouvel artefact Maven :
com.android.support.test.espresso.idling:idling-net:3.0.0. - Contient la classe
UriIdlingResource.
- Ajout d'un nouvel artefact Maven :
- Ajout de nouveaux outils de mise en correspondance pour les vues
espresso-core:hasBackground()met en correspondance la ressource drawable d'arrière-plan d'un objetView.hasTextColor()met en correspondance la couleur d'un objetTextView.
- Ajout de nouvelles méthodes d'action pour les vues :
- Amélioration de l'action de vue
scrollTo()afin de prendre en charge les descendants deListView. repeatedlyUntil(): exécute laViewActionspécifiée sur une vue jusqu'à ce que celle-ci corresponde auxViewMatcherssouhaités.
- Amélioration de l'action de vue
- Ajout de nouvelles méthodes Espresso :
pressBackUnconditionally(): semblable àpressBack(), mais ne génère pas d'exception lorsque Espresso gère la navigation.noActivity(): plus besoin d'attendre une activité avant d'effectuer uneViewActionouViewAssertion.onIdle(): crée une boucle dans le thread principal jusqu'à ce que l'application devienne inactive.onIdle(Callable<T>): semblable àonIdle(), mais accepte unCallablesupplémentaire en tant que paramètre qui s'exécute lorsque l'application devient inactive.
webScrollIntoView(): nouvel Atomespresso-webqui vous permet de faire défiler unWebView.
- Prise en charge de Multiprocess Espresso sur l'API 26 pour
- Exécuteur
-
InterceptingActivityFactoryetSingleActivityFactory: permettent de tester une activité de manière indépendante en remplaçant des méthodes telles questartService()etsendBroadcast(). -
Prise en charge de JUnitParams avec
AndroidJUnitRunner. -
Début de la gestion de
@UiThreadTestau niveau du lanceur de test principal et abandon de@UiThreadTestRule. Cela permet d'utiliser l'annotation@UiThreadTestdirectement sur les méthodes annotées avec@Beforeet@After. -
Prise en charge de la valeur
maxSdkVersionpar l'annotation@SdkSupress. (problème 37067792) -
-e classLoader: permet de transmettre des chargeurs de classe à l'aide d'arguments d'exécuteur. -
-e filter: permet de prendre en charge des filtres JUnit personnalisés à spécifier à l'aide d'arguments d'exécuteur. -
-e runnerBuilder: permet aux développeurs de fournir leurs propres implémentations deRunnerBuilderafin de déterminer si elles peuvent être exécutées sur une classe spécifique et comment.
-
- Règles
ProviderTestRule: nouvelle API pour tester les objetsContentProvider.getActivityResult()etActivityResultMatchers: nouvelle API permettant de récupérer le résultat d'une activité qui a appelésetResult().
- 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.
- 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.
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-coreintègre les fichiers.pomde Guava. - Problème 37062612 : exception NPE dans
release(). - Problème 37063389 : échec de compilation avec Guava et
espresso-webcomme dépendancesandroidTest. - Problème 37070533 : prise en charge de
NavigationViewdans la bibliothèque Support Design Android.
- Exécuteur
-
Correction permettant d'utiliser
@UiThreadTestavec@Test(timeout = 123). - Correction de l'argument d'exécuteur
-e notClass. - Correction de
-e logafin de prendre en charge les suites de test JUnit3 et JUnit4, ainsi que les exécuteursParameterizedetEnclosed. - 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 :
@RequiresDeviceest 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èreNullPointerException).
-
Correction permettant d'utiliser
- Règles
- Correction du cycle de vie de
ActivityTestRuleafin d'unifier le comportement lors de l'initialisation standard et différée deActivityTestRule. - Problème 37079943 : correction de
ServiceTestRulepermettant d'effectuer à nouveau la liaison. - Problème 37109342 : ajout de
getActivityResult()etActivityResultMatchers.
- Correction du cycle de vie de
- UiAutomator
- Compatibilité entre
setUiAutomationFlags()etUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES, permettant d'utiliserUiAutomatoralors que d'autres services d'accessibilité sont en cours d'exécution. - Problème 37082813 :
setText()sur des objetsEditTextvides renvoie une exceptionNullPointerExceptionsi le niveau d'API est inférieur ou égal à 19.
- Compatibilité entre
Autres changements notables
- Mise à jour : les binaires sont désormais publiés via Google Maven.
- Réduction de la taille des fichiers JAR
espresso-coreetespresso-web: ProGuard est désormais appliqué aux dépendances intégrées. - Mise à jour : tous les fichiers
.aarincluent désormais les règles ProGuard. - Ajout de fichiers
proguard_library.cfgaux artefacts publiés. - Mise à jour de l'interface
Tapper, qui permet désormais d'implémenter une nouvelle version desendTap().
Contributions externes
- Espresso
- Runner
- Règles
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().
- Problème 187249 : exception NPE dans
- runner
- Problème 196066 : l'argument
-e log truedansAndroidJUnitRunnerne 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.
- Problème 196066 : l'argument
Autres changements notables
- Mise à jour de
ActivityTestRule,UiThreadTestRule,IntentsTestRuleetServiceTestRule, 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
IntentsTestRulepour une compatibilité totale avecActivityTestRule.
- Ajout d'un nouveau constructeur
- 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
- Exécuter tous les tests, sauf ceux d'une classe particulière :
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
DrawerActionspour les panneaux à gravité arbitraire. - 150744 :
DrawerActionsne provoque plus la fuite deparentListener. - 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.
- 157911 : ajout d'un outil de mise en correspondance des vues pour le type d'entrée sur un objet
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.
- Mise à jour de
- rules
- Correction de
ServiceTestRuleau niveau d'API 23 :startService()doit toujours être appelé avec unIntentexplicite.
- Correction de
- 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.
- Correction du problème de compatibilité avec le Gradle
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.
- Prise en charge de
- 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.
- Ajout de la règle
- 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
DrawerActionsqui provoque la fuite deParentListener. - 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
MonitoringInstrumentationqui provoque la fuite d'instances d'activité viaExecutorService. - 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 dansUiObject2#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.1devientcom.android.support.test:runner:0.2etcom.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 deActivityTestRulequi 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
UiThreadRuleetUiThreadTest: cette règle permet à la méthode de test annotée avecUiThreadTestde 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 unFileou unOutputStream.
- Mise à jour de
Correction de bugs
- espresso
- Mise à jour de l'outil de mise en correspondance du curseur, qui renvoie désormais
falsesi la colonne est introuvable, afin que Hamcrest puisse passer au curseur suivant. - Suppression de l'exception
NullPointerExceptionavecPreferenceMatcherswithTitle. - 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.
- Mise à jour de l'outil de mise en correspondance du curseur, qui renvoie désormais
- runner
- Mise à jour de
AndroidJUnit4, qui ignore désormais les tests avec des hypothèses en échec.
- Mise à jour de
- UIAutomator
- Exécution d'observateurs pour empêcher
StaleObjectException.
- Exécution d'observateurs pour empêcher
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.espressoversandroid.support.test.espresso. - Changement de noms pour les artefacts Espresso :
espresso-1.1.jardevientespresso-core-release-2.0.jar.- L'interface
IdlingResourcea été déplacée dans une bibliothèque distincte :espresso-idling-resource-release-2.0.jar. CountingIdlingResourcese trouve désormais dansespresso-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
ViewActionsreplaceText()openLink()- Balayage vers le haut et vers le bas
- espresso-contrib
RecyclerViewActions: gère les interactions avecRecyclerViews.PickerActions: gère les interactions avec les sélecteursDateetTime.
- Outils de mise en correspondance
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()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 objetsCursor.
- Assertions
PositionAssertions, y comprisisLeftOf()etisAbove(): ensemble deViewAssertionspour 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()etEspresso.getIdlingResources(): apporte une flexibilité supplémentaire lors de l'utilisation desIdlingResources.ViewInteraction.withFailureHandler(): permet de remplacer le gestionnaire d'échecs depuisonView().- Prise en charge de
onData()pourAdapterViewsavecCursorAdapters.
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'exceptionIdlingResourceTimeoutException.
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
ViewActionsswipeLeftetswipeRight. - 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
DrawerActionspourDrawerLayout: 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 installdevrait donc fonctionner désormais.