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

Bibliothèques Discussion :

[Cppunit] test de methodes privees


Sujet :

Bibliothèques

  1. #1
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut [Cppunit] test de methodes privees
    Bonjour a tous.
    Est ce que qq un sait comment on fait pour tester des methodes privees avec cppunit ?

    Merci
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    a- amitié si #define particulier activé
    b- maintenir une version deprivatisée de ton fichier d'en-tête (bof)
    c- ne tester que les fonctions publiques de la classe qui t'interesse -- c'est le principe des TU il me semble : tester ce qui est dans les interfaces publiques. Peu importe les évolutions d'implémentation.
    d- reprendre ton code pour extraire, dans la zone publique d'une autre classe, la partie privée que tu juges à tester.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    D'un point de vue test unitaire, tester les méthodes privées n'a pas de sens.

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Bien sûr que ça a un sens.

    Tester des méthodes privées, souvent du code factorisé servant à plusieurs algorithmes, permet de s'affranchir de sources d'erreur dans les parties publiques.

    Si la méthode privée est correcte, que la méthode publique qui l'utilise ne passe pas un test, on sait qu'il faut :
    1/ vérifier que l'appel est conforme à la description de la méthode privée
    2/ vérifier qu'il n'y a pas d'effet de bord sur des attributs utilisés (lecture ou écriture) dans celle-ci.

    Mais il n'est pas utile de remettre en cause la méthode privée; si son TU est suffisant et prouvé.

    Citation Envoyé par VoidSeer
    D'un point de vue test unitaire, tester les méthodes privées n'a pas de sens.

  5. #5
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    D'un point de vue test unitaire, tester les méthodes privées n'a pas de sens.
    Si je pose la question, c'est que cela a un sens... (plus proche on est de l'erreur, mieux c'est !)

    Ce que je souhaite savoir, c'est s'il existe un autre moyen que de "déprivatiser" les fonctions en question. Sinon, c'est pas grave, je saurai me débrouiller ainsi !
    a- amitié si #define particulier activé
    De quel #define parles-tu ?

    Merci encore !
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Ne me faite pas dire ce que je n'ai pas dit. Ecrire un TU pour une méthode privée aide bien
    sûr en cas de débogage. Mais strico sensu, un TU n'a d'objet que l'interface d'un classe.
    Si la méthode privée en question effectue quelque chose d'utile et complexe à partir de types disponibles par un client, alors autant modifier sa visibilité. Si elle manipule des
    données privées de la classe, alors elle n'est pas censée faire partie d'un test unitaire.

    Maintenant si c'est vraiment ce que tu souhaites, y'a deux trois bidouilles
    L'amitié conditionnelle proposée par LH.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Clazz
    {
    #ifdef UNIT_TEST
    friend class ClazzTest;
    #endif
    };
    Ou le max du bourrin, que je met ici plus pour rire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define private public
    #include <Class.hpp> // La classe à tester
    #undef private
    Qui en théorie amène un comportement indéfini, mais qui marche en pratique.

  7. #7
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    OK, ca me va pour le friend (en meme temps, une classe de test amie de celle qu'elle teste, ca me semble correct )

    Merci bien.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Je viens de lire un chapître de livre à ce sujet, Exceptional C++ Style de Stutter, il parle des manières de contourner le "private"

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

Discussions similaires

  1. [DBUnit] test une methode d'insert d'un dao avec DBUnit
    Par foucha dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 14/08/2009, 20h14
  2. Protocole du CppUnit-test sur un browser (xsl)
    Par merlinerick dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 24/06/2009, 09h53
  3. Cppunit-Test ( Corriger l'erreur )
    Par merlinerick dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 30/04/2009, 00h24
  4. Réponses: 6
    Dernier message: 17/02/2009, 19h32
  5. CPPUnit test en 3D
    Par merlinerick dans le forum C++
    Réponses: 2
    Dernier message: 21/01/2009, 14h35

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