Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt
No Result
View All Result
Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt
Support IVY : Encyclopédie #1 et site d'informations, Conseils, Tutorials, Guides et plus
No Result
View All Result
Home Programmation Android

Comment tester les activités Android – Bethany Drake

20 juin 2020
in Android
Reading Time: 9 mins read
Comment tester les activités Android – Bethany Drake

Table des matières

ArticlesA lire

Revue Atomicrops – SUPERJUMP – Moyen

Revue Atomicrops – SUPERJUMP – Moyen

Un moyen super facile de faire des validations EditText dans Android

Messagerie cloud Firebase – Satya Pavan Kantamani

Messagerie cloud Firebase – Satya Pavan Kantamani

Génération de DeepLinks au moment de la compilation Android

Génération de DeepLinks au moment de la compilation Android

Comment tester les activités Android – Bethany Drake

Bethany Drake

Dans les environnements de test, Android n’existe pas. Cela signifie que tester même l’activité la plus simple peut être délicat.

Photo de Pim Chu sur Unsplash

Lorsque j’ai commencé à développer des applications Android, je n’ai écrit aucun test. Bien sûr que non – je ne faisais que déblayer, faisant des choses pour mon propre plaisir. Ensuite, j’ai décidé d’être un professionnel. J’ai commencé petit, avec l’application la plus simple possible et le test le plus simple possible, et j’ai immédiatement été perplexe. Pour toute personne dans le même bateau, cet article est pour vous!

Disons que vous avez une activité avec un bouton. Lorsque vous appuyez sur le bouton, vous souhaitez ouvrir une activité différente.

Votre code source pourrait ressembler à ceci:

Quelque part, dans un fichier de mise en page, vous définissez `onClick` d’un bouton pour `openOtherActivity`. Mais concentrons-nous uniquement sur le code Kotlin. Pas besoin de viser trop haut, non?

Ensuite (ou de préférence au préalable, si vous appliquez le TDD avec diligence), vous essayez d’écrire un test. Pour commencer, vous pourriez même ne pas vérifier qu’il se comporte comme vous l’attendez: le test le plus simple possible est simplement «lorsque vous appelez la fonction, rien n’explose».

Cela pourrait ressembler à ceci:

Cependant, même ce test très simple entraîne une erreur:

`java.lang.RuntimeException: méthode startActivity dans android.app.Activity non mocked.`

En effet, dans les environnements de test, les éléments spécifiques à Android n’existent pas. Il s’agissait d’un choix de conception délibéré par Android, et il a ses avantages et ses inconvénients. Un résultat de cette décision pour les tests unitaires est que nous devons nous moquer des composants spécifiques à Android.

Une bibliothèque moqueuse pour kotlin est Mockk, que j’utiliserai pour cet exemple. Toute autre bibliothèque de simulation similaire devrait faire l’affaire.

Revenons donc à notre test. Nous pouvons nous moquer de la méthode startActivity (et garder tout le reste comme la vraie chose) en utilisant `spyk` de Mockk:

Et maintenant le test passe!

À partir de là, nous pourrions étendre le test pour vérifier de manière plus approfondie le comportement réel de la fonction. Par exemple, qu’il appelle `startActivity` avec le bon type d’intention.

Pour l’exemple suivant, supposons que nous voulons ajouter quelques extras à l’intention avant d’ouvrir l’activité:

Nous essayons d’exécuter un test simple similaire, vérifiant simplement que rien n’explose.

Nous avons utilisé la même astuce moqueuse que la dernière fois, mais nous obtenons maintenant une autre erreur:

`java.lang.RuntimeException: méthode putExtra dans android.content.Intent non mocked.`

Cela ressemble assez à la dernière erreur. Cependant, nous ne pouvons pas le réparer de la même manière.

Nous n’avons pas accès à l’intention, car elle est créée à l’intérieur de l’activité. Cela signifie que se moquer de l’intention est délicat.

Une façon de résoudre ce problème consiste à injecter un objet d’usine, que nous pouvez moquer.

L’objet d’usine a besoin d’une fonction que nous pouvons utiliser pour créer une intention sans appeler directement le constructeur. Cela pourrait ressembler à ceci:

Ensuite, nous devons injecter cette usine dans l’activité afin de pouvoir la remplacer dans le test.

L’injection de dépendances peut être réalisée dans Android en utilisant un framework comme Dague. Mais nous n’en avons pas besoin – une implémentation naïve fonctionne bien pour commencer. Nous pouvons simplement passer la dépendance en tant que paramètre facultatif à l’activité. Ainsi:

Lors de l’exécution, `ExempleActivité` sera créé avec la valeur par défaut, ce qui créera une nouvelle intention réelle. Maintenant, cependant, nous pouvons le remplacer dans notre test pour être un objet factice:

Notez que mettre `relax = true` donne une maquette qui retourne des simulations par défaut pour chaque appel de méthode.

Et le tour est joué! Tests unitaires pour une activité Android, mais avec toutes les choses spécifiques à Android moquées en toute sécurité.

photo par Austin Schmid sur Unsplash

Ressources:

ShareTweetPin

Related Posts

Revue Atomicrops – SUPERJUMP – Moyen
Android

Revue Atomicrops – SUPERJUMP – Moyen

Revue Atomicrops - SUPERJUMP - Moyen L'agriculture est destinée à compléter l'action, et non l'inverse.

Android

Un moyen super facile de faire des validations EditText dans Android

Un moyen super facile de faire des validations EditText dans Android Ici, nous obtenons le TextInputLayout de TextInputEditText en utilisant...

Messagerie cloud Firebase – Satya Pavan Kantamani
Android

Messagerie cloud Firebase – Satya Pavan Kantamani

Messagerie cloud Firebase - Satya Pavan Kantamani Explorez Firebase Cloud Messaging (FCM), une solution de messagerie cloud multiplateforme qui vous...

Génération de DeepLinks au moment de la compilation Android
Android

Génération de DeepLinks au moment de la compilation Android

Génération de DeepLinks au moment de la compilation Android Les liens profonds sont des aspects importants de l'application qui rendent...

Next Post
Comment Domino a revitalisé sa marque défaillante – Meilleur marketing

Comment Domino a revitalisé sa marque défaillante - Meilleur marketing

Les entreprises de la blockchain se démènent pour se conformer à la «règle du voyage» du GAFI

Les entreprises de la blockchain se démènent pour se conformer à la «règle du voyage» du GAFI

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  • Accueil
  • Questions & Réponses
  • Science
  • Astuces
  • Business
  • Cryptomonnaie
  • Design
  • Marketing
  • Programmation
  • Politique de confidentialité
  • A propos
  • Contact

© 2018-2020 SupportIVY - Premium Magazine.

No Result
View All Result
  • Accueil
  • Astuces
  • Magazine
    • Conseil en relations
      • Astuces
    • Rédaction & écriture
    • Web Design
    • Réseaux sociaux
      • Facebook
  • Lifestyle
    • Food
  • Ressources
    • Questions & Réponses
    • Graphique
      • PixelArt