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 :

Ou placer les Tests unitaires


Sujet :

Dotnet

  1. #1
    Invité
    Invité(e)
    Par défaut Ou placer les Tests unitaires
    Bonjour,

    Je travaille depuis quelques semaines sur une application WPF. Pour poser le décor, voici un bref aperçu de l'architecture de la solution :

    UI :
    Shell
    Modules

    La partie UI est composée d'un Shell (une sorte de lanceur) qui s'occupe de charger les différents modules lorsque l'utilisateur clique sur le menu approprié (utilisation de MEF).
    A noter que la partie UI fonctionne sur le principe MVVM (avec MVVM Light de Galasoft).

    Services WCF :
    Le service WCF contient la couche d'accés aux données (Entity Framework), les process, ...

    Jusqu'à maintenant, je n'ai pas encore eu le temps de mettre en place le moindre tests. J'aimerais corriger cela et le faire de la meilleure manière qui soit.

    Le problème, c'est que je ne sais pas trop quelles parties de l'application tester ou non.

    Faut t'il mettre les tests côté UI (en appelant le service WCF dans le test) ? Côté Service ? Des deux côtés ?

    Prenons un exemple simple, la création d'un Client.

    Côté UI, j'ai une méthode sur mon ViewModel qui s'execute sur la command du click du bouton "Enregister".
    Cette méthode appelle elle même une méthode placée sur mon Model.
    La méthode du Model appelle la méthode appropriée (AddCustomer) sur le service WCF.

    Sur le Service WCF, la méthode AddCustomer se charge d'ajouter le client via EF.

    Faut t'il placer des tests sur chacune de ces méthodes ?

    Un test placé côté UI sur la méthode qui crée un client doit il remonter jusqu'à la création complète du client côté service ?

    Dans ce cas, si je fais un test côté UI et que l'ajout du client s'effectue bien, je ne vois pas trop l'intérêt de faire un nouveau test côté service rien que pour la méthode AddCustomer.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Comme l'indique son nom, un test unitaire doit être unitaire.
    Chaque couche doit avoir sont projet de test. Lorsque tu testes un objet, il ne doit surtout pas appeller tout une autre chaîne d'objet: il faut mocker!
    Si tu dois tester ton viewModel, il faut mocker les appels au service. Si tu dois tester ta couche métier, tu dois mocker la couche d'accès aux données. Sinon tu te retrouves à tester la terre entière sans que ca soit unitaire

  3. #3
    Invité
    Invité(e)
    Par défaut
    C'est bien ce que je supposais.

    Par contre, qu'entends tu par "Mocker les appels au service" exactement ?

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    En utilisant un framework comme RhinoMock ou Moq, tu peux faire une implémentation de la même interface que ton service. Ce mock est en fait un service de test très utile pour les tests unitaires (on sait par exemple ce qu'il doit renvoyer etc.)
    http://en.wikipedia.org/wiki/Mock_object

  5. #5
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    A mon avis, maintenant que tu as terminé de coder alors écrire des tests unitaires n'a que très peu d’intérêts puisqu'il faut les écrire avant.

    Tu devrais commencer d'abord par écrire des tests d'acceptance qui tests toute la chaîne en partant de la couche UI, si tu utilises la dernière version de Ms Test alors tu pourrais enregistrer des scénarios que tu veux comme ajouter des clients etc...

    Ensuite tu peux toujours écrire des tests unitaires à posteriori cependant cela va être plus compliqué sur du legacy code puisque ta conception est terminée mais bon cela pourrait mettre en évidence certains problèmes et permettre de démarrer en commençeant par les tests pour les autres classes ou méthodes

Discussions similaires

  1. Strategies pour les tests unitaires
    Par xxiemeciel dans le forum Test
    Réponses: 6
    Dernier message: 17/04/2008, 11h59
  2. Les Tests Unitaires en PHP
    Par Ashgenesis dans le forum Langage
    Réponses: 2
    Dernier message: 31/12/2007, 16h15
  3. LookupDispatchAction et les tests unitaires
    Par fk04 dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/10/2007, 14h36
  4. [VS 2005] Les Tests Unitaires
    Par loverdose dans le forum Visual Studio
    Réponses: 3
    Dernier message: 07/05/2007, 19h25

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