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 :

[NUnit] Tester une méthode private


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut [NUnit] Tester une méthode private
    Hello!

    y'a t'il un moyen simple de tester une méthode privée avec NUnit? (je pensais faire hériter ma classe de test de ma classe testée et passer de private à protected, c'est une bonne solution?)

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Salut,

    y'a t'il un moyen simple de tester une méthode privée avec NUnit? (je pensais faire hériter ma classe de test de ma classe testée et passer de private à protected, c'est une bonne solution?)
    Pas de moyen reelement simple...

    En plus, si c'est une classe privee, tu ne devrais pas avoir a modifier ton design pour pouvoir la tester...

    donc, deux solutions, soit tu testes ta methode privee en testant la/les methodes qui l'appellent
    soit tu utilises la reflexion pour la tester...

    un p'tit exemple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MethodInfo MIGeneratePayLoad;
    Type t = typeof(WebserviceFactory);
    MIGeneratePayLoad = t.GetMethod("GeneratePayLoad", BindingFlags.NonPublic | BindingFlags.Static);
    StringBuilder payload = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    Assert.AreEqual(MIGeneratePayLoad.Invoke(null, new object[] { "" }),payload.ToString());
    Je ne me suis pas trop servi de cette methode...personnellement, je prefere tester en me disant que je suis un client de mon API -> pas interesse dans la cuisine interne de ma classe...

    Si vraiment, tu veux faire des tests intensifs sur des methodes privees, mets tes tests directement dans ta classe (perso, j'aime pas... )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Merci pour ta réponse! (j'ai tendance à squatter certaines personnes sur ce forum décidemment )

    je pense que je vais également partir du principe que c'est de la cuisine interne (vraiment pas envie de mettre des tests à l'intérieur de ma classe).

    En mettant des bons controles à l'intérieur des méthodes privées, ca devrait suffire

    ,

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Je me permets quelques remarques :

    • J'approuve l'approche de base; il ne faut pas tester une méthode privée autrement que par le biais des résultats produits par les méthodes publiques de la classe.
    • Si pour d'excellentes raisons il te semble qu'un test sur une méthode privée est indispensable, il s'agit peut être (je dis bien peut être) d'une petite erreur de design et la méthode privée mériterait éventuellement d'être modifiée/promue/extraite.
    • Si non-seulement la méthode doit rester privée et que vraiment un test se justifie, alors oui, la meilleure approche est la reflexion car elle n'est pas intrusive. En aucun cas il ne faut sacrifier un design correct sur l'autel de la testabilité.

  5. #5
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Ho un suisse (enfin presque... )

    merci pour la réponse! en me balladant sur le net j'ai lu un peu pareil partout et du coup j'en ai un peu perdu mes notions de bases.. étrange..., juste comme piqure de rappel, quelqu'un saurait me dire les critères clés qui font que l'ont détérmine qu'une classe sera publique ou privée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester l'existence d'une méthode dans une classe
    Par oumay dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 20/03/2015, 14h46
  2. Tester l'existence d'une méthode
    Par guillaumec38 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 30/01/2012, 10h50
  3. Tester si une méthode de classe existe
    Par Invité dans le forum C++
    Réponses: 5
    Dernier message: 17/11/2011, 08h27
  4. [1.x] Comment tester l'existence d'une méthode sur un objet
    Par jekif dans le forum Symfony
    Réponses: 0
    Dernier message: 02/11/2011, 11h48
  5. Tester si un objet est une fonction ou une méthode de classe
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 23/06/2009, 01h13

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