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'indicateurcoverageFile
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 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 deMonitoringInstrumentation
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 modulemonitor
en 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 :
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
.
- 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
IdlingPolicy
permettant 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 numShards
et-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-core
etespresso-web
, mais pasespresso-contrib
. - Ajout d'une nouvelle API
IdlingRegistry
lé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
IdlingScheduledThreadPoolExecutor
etIdlingThreadPoolExecutor
.
- 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 laViewAction
spécifiée sur une vue jusqu'à ce que celle-ci corresponde auxViewMatchers
souhaité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 uneViewAction
ouViewAssertion
.onIdle()
: crée une boucle dans le thread principal jusqu'à ce que l'application devienne inactive.onIdle(Callable<T>)
: semblable àonIdle()
, mais accepte unCallable
supplémentaire en tant que paramètre qui s'exécute lorsque l'application devient inactive.
webScrollIntoView()
: nouvel Atomespresso-web
qui vous permet de faire défiler unWebView
.
- Prise en charge de Multiprocess Espresso sur l'API 26 pour
- Exécuteur
-
InterceptingActivityFactory
etSingleActivityFactory
: 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
@UiThreadTest
au niveau du lanceur de test principal et abandon de@UiThreadTestRule
. Cela permet d'utiliser l'annotation@UiThreadTest
directement sur les méthodes annotées avec@Before
et@After
. -
Prise en charge de la valeur
maxSdkVersion
par 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 deRunnerBuilder
afin 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-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épendancesandroidTest
. - 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écuteursParameterized
etEnclosed
. - 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èreNullPointerException
).
-
Correction permettant d'utiliser
- Règles
- Correction du cycle de vie de
ActivityTestRule
afin d'unifier le comportement lors de l'initialisation standard et différée deActivityTestRule
. - Problème 37079943 : correction de
ServiceTestRule
permettant 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'utiliserUiAutomator
alors que d'autres services d'accessibilité sont en cours d'exécution. - Problème 37082813 :
setText()
sur des objetsEditText
vides renvoie une exceptionNullPointerException
si 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-core
etespresso-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 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 true
dansAndroidJUnitRunner
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
.
- Problème 196066 : l'argument
Autres changements notables
- Mise à jour de
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
etServiceTestRule
, 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 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
DrawerActions
pour les panneaux à gravité arbitraire. - 150744 :
DrawerActions
ne 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
ServiceTestRule
au niveau d'API 23 :startService()
doit toujours être appelé avec unIntent
explicite.
- 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
DrawerActions
qui 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
MonitoringInstrumentation
qui 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.1
devientcom.android.support.test:runner:0.2
etcom.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 deActivityTestRule
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
etUiThreadTest
: cette règle permet à la méthode de test annotée avecUiThreadTest
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 unFile
ou unOutputStream
.
- Mise à jour de
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
avecPreferenceMatchers
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.
- 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.espresso
versandroid.support.test.espresso
. - Changement de noms pour les artefacts Espresso :
espresso-1.1.jar
devientespresso-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 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
ViewActions
replaceText()
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électeursDate
etTime
.
- 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 objetsCursor
.
- Assertions
PositionAssertions
, y comprisisLeftOf()
etisAbove()
: ensemble deViewAssertions
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()
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()
pourAdapterViews
avecCursorAdapters
.
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
ViewActions
swipeLeft
etswipeRight
. - 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
pourDrawerLayout
: 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.