IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Apprendre à faire des tests unitaires en .Net Core avec XUNIT [Tutoriel]


Sujet :

Dotnet

  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 200
    Points : 85 066
    Points
    85 066
    Billets dans le blog
    15
    Par défaut Apprendre à faire des tests unitaires en .Net Core avec XUNIT
    Chers membres du club,

    J'ai le plaisir de vous présenter ce tutoriel d'OlivierSoro :


    Vous entendez parler des tests unitaires, des Mocks mais vous ne savez pas concrètement comment et quand les appliquer ? Ce tutoriel a pour but de vous faire comprendre ces différents concepts et de vous montrer des cas pratiques d’utilisation à travers un mini projet .Net Core.

    Prérequis : niveau débutant en C# et Visual Studio (2019 de préférence).
    Bonne lecture

    Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation DotNET.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Points : 147
    Points
    147
    Par défaut
    Bonjour,

    Sympas de voir un tutoriel sur les Tests Unitaires.

    Malheureusement il y a beaucoup de chose à dire sur ce petit tutoriel.

    1 - Pas besoin de TDD pour faire des tests Unitaires

    De mon points de vue, il aurait fallu ne pas aborder TDD, mais faire une approche Test First.
    TDD étant une méthode de développement, cela ne met pas en avant cette pratique.

    2 - Partie TDD

    - On n’explique pas les enjeux de la méthode
    - les deux styles de TDD ( Classique VS Mockiste)
    - On n’explique pas AAA et Red-Green-Refactor
    - L'exemple est faux, la méthode aurait dû retourner 29, puis faire un nouveau test pour faire émerger l'algorithme
    - Donc forcement à la fin on n’est pas expert TDD

    3 - Partie MOCK

    Ici l'auteur se place dans la partie Mockiste des tests.
    De plus l'introduction peut amener à la réflexion qu'un test ne peux pas traversez plusieurs classes de notre application ce qui est faux. C'est même un Anti-pattern de tester chaque classe unitairement.

    Un test est là pour valider un comportement et non une méthode/classe.

    Pour le reste, ce sont des exemples et l'utilisation de la librairie.
    Pareil les mocks sont multiples ( Stub, Mock, Fake, etc... ), d'ailleurs Mock est un abus de langage... Le faire à la main aurait permis à l'utilisateur de mieux en comprendre l'utilité.

    Je sais tout de même que l'élaboration d'un tutoriel prends du temps mais c'est un sujet sur lequel il faut être précis car on entend tout et n'importe quoi

  3. #3
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 510
    Points
    510
    Par défaut
    Bonjour,

    Merci pour tes remarques pertinentes !

    1. Pas besoin de TDD pour faire des tests Unitaires
    Oui on n'a pas besoin de TDD pour faire des tests unitaires mais j'en parle ici parce que c'est cette méthode qui sera utilisée tout au long du tutoriel pour écrire nos tests unitaires. Je ne voulais pas qu'on apprenne juste à écrire du test unitaire mais qu'on sache comment l'utiliser dans un projet de développement d'application.
    Le TDD est la méthode que j'utilise et recommande pour l'écriture des tests unitaires.

    2. Partie TDD
    L'exemple n'est pas faux puisque dans la méthode TDD on commence toujours par écrire un test qui échoue. C'est ce qui a été appliqué de la manière la plus simple possible. SI ma méthode retournait directement 29 ce n'etait plus du TDD que je faisais.
    Concernant les deux styles de TDD ( Classique VS Mockiste) c'est vrai que je n'en parle pas et c'est clair qu'il y'a plein de points que je n'ai pas abordé dans ce tutoriel vu que c'est un tutoriel de prise en main.

    3. Partie MOCK
    Je ne dis pas qu'un test ne peut pas traverser plusieurs classes de notre application. La preuve je dis bien dans le tutoriel:
    Dans le cas où notre code à tester a une dépendance vers un objet inaccessible ou non implémenté, il nous faut utiliser un Mock.

    En gros j'ai voulu abordé trois points: les tests unitaires, la méthode TDD et les Mocks de la manière la plus simple et compréhensible possible pour un développeur qui n'est pas encore familier avec tout ça.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Points : 147
    Points
    147
    Par défaut
    Bonjour,

    Ok pour la suite de tutoriel. Vu comme ça l'aborder est une bonne idée mais je reste persuadée que le faire en deux temps n'aurait pas posé de problème
    Il faudra bien faire les liens entres les tutoriels.

    Pour le point 2, je ne parle pas du red-green-refactor qui est correct (Le test échoue bien et tu as même fait un screenshot), je parle de sa résolution.
    Si on veut montrer TDD dans le détail, j'aurais fait :

    -> Test qui échoue
    -> Un test qui s'attend à avoir 29
    -> je fais retourner 29 à ma méthode
    -> J'écris un nouveau test qui retourne une valeur différente
    -> Je joue mes tests, oups 1 fonctionne mais pas l'autre
    -> je fais l'implémentation que tu as donnée
    -> je rejoue les deux tests, les deux sont verts.

    Pour le point 3, je me suis peut-être mal exprimer. Je voulais dire qu'une novice en test unitaire peux le penser en lisant la phrase. Juste peut être un petit souci de tournure de phrase

    En tout cas ça fait toujours plaisir de voir des articles sur les Tests

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 510
    Points
    510
    Par défaut
    Ok c'est noté ! Il n'est pas souvent evident de définir clairement le but que tu vises à atteindre lorsque tu écris un tutoriel.
    Mais je prendrai en compte tes remarques pour l'écriture de mes futurs tutoriels .

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Points : 147
    Points
    147
    Par défaut
    Je suis totalement d'accords. Surtout quand le sujet n'est pas purement technique .

    Après il faut plus de sujet de ce genre en français et tu as bien fait de te lancer. Souvent c'est en anglais et certain terme sont difficiles à appréhender quand l'anglais n'est pas maitrisé ( merci à Google traduction ^^ ).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 14
    Points
    14
    Par défaut
    C'est pas souvent que l'on trouve un tutoriel d'introduction sur les test unitaires et qui plus est en français.
    Et celui ci particulièrement clair et les exemples bien choisi.
    C'est donc pour moi une belle contribution , merci ++;
    Ah j'espère qu'il y aura une suite avec autofixture par exemple

    Au fait y en aura t' il une ?

  8. #8
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 510
    Points
    510
    Par défaut
    Citation Envoyé par DevEric Voir le message
    C'est pas souvent que l'on trouve un tutoriel d'introduction sur les test unitaires et qui plus est en français.
    Et celui ci particulièrement clair et les exemples bien choisi.
    C'est donc pour moi une belle contribution , merci ++;
    Ah j'espère qu'il y aura une suite avec autofixture par exemple

    Au fait y en aura t' il une ?

    Merci DevEric Oui je prépare une suite avec FluentAssertions, ExpectedObjects, AutoFixture, NSubstitute. Je profiterai aussi pour expliquer le pattern AAA pour prendre en compte l'ensemble des remarques que j'ai reçu.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2020
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Félicitation, trop cool...
    J'ai moi aussi trouvé l'article particulièrement didactique et bien documenté.
    Mais maintenant que j'ai vu qu'il y aura une suite avec ExpectedObjects, AutoFixture, NSubstitute.... j'ai vraiment hâte de la découvrir.

    Sait on quand elle paraîtra ?

    Merci

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    Hello Olivier,
    Très bon tutoriel, nous attendons tous la suite.

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Pays-Bas

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    J'ai aussi beaucoup aimé ce tutoriel et en si peu de pages il couvre déjà bien le sujet comme par exemple le mock du fichier.
    Pour moi, les exemples sont bien expliqués et l'approche est claire .
    Alors je ne peux que rejoindre les autres avec la même question ... y aura t'il bien une suite ?

  12. #12
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 510
    Points
    510
    Par défaut Partie2 : AutoFixture
    Chers membres du club,

    Comme annoncé dans ce fil, l'aventure se poursuit et j'ai le plaisir de vous présenter la deuxième partie de ce tutoriel :


    Dans la première partie du tutoriel, nous avons appris comment développer selon l’approche TDD à l’aide des tests unitaires et des Mocks. Dans cette seconde partie, nous allons explorer la bibliothèque AutoFixture qui offre des supports très intéressants pour faciliter l’écriture et la maintenance des tests unitaires.
    Bonne lecture

    Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation DotNET.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 14
    Points
    14
    Par défaut
    Très bonne suite toujours aussi bien documenté , merci beaucoup

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/11/2017, 12h00
  2. Réponses: 0
    Dernier message: 28/03/2011, 16h24
  3. Faire des tests unitaires
    Par rambc dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 12/12/2010, 22h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo