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

Boost C++ Discussion :

Comment faire des test avec boost::test


Sujet :

Boost C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 38
    Points
    38
    Par défaut Comment faire des test avec boost::test
    Bonjour,

    J'aimerai savoir comment doit-on s'y prendre si on veut tester l'inégalité ou la négation par exemple avec boost.

    A la page : http://www.boost.org/libs/test/doc/c...ols/reference/

    Je ne trouve pas de test pour différent. Je m'explique. Je veux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A a(1), b(2);
    BOOST_CHECK_DIFF(a,b) // <- me reponds true, le test est valide
    ou
    BOOST_CHECK_NEG(a.is_two()) // <- me reponds true, le test est valide

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par cdm1024 Voir le message
    Je ne trouve pas de test pour différent. Je m'explique. Je veux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A a(1), b(2);
    BOOST_CHECK_DIFF(a,b) // <- me reponds true, le test est valide
    Tu peux simplement faire BOOST_CHECK(a!=b);

    L'intérêt d'avoir un BOOST_CHECK_EQUAL au lieu d'un simple BOOST_CHECK(a==b) est que si le test échoue, on peut avoir affiché les 2 valeurs afin d'avoir une idée du problème. Si on veux que deux valeurs soient différentes, leur valeur importe généralement peu, et ça ne sert alors pas à grand chose d'afficher leur valeur identique si le test échoue, c'est je pense pourquoi les auteurs n'ont pas voulu ajouter trop de tests.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 38
    Points
    38
    Par défaut
    d'accord pour ta réponse.

    Mais j'ai un test pour tester l'opérateur !=. Et donc ca donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A a(1), a(2);
    BOOST_CHECK(!(a!=2))
    C'est la solution d'après ta réponse. Mais je la trouve pas très esthétique. Enfin, c'est une affaire de goût

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Personnellement je suis assez faignant donc je ne teste que ce qui est susceptible de ne pas fonctionner, et c'est très rare que le code d'un opérateur de comparaison soit suffisamment complexe pour que j'estime avoir besoin de le tester.
    Cela dit comme j'implémente mes operator!= en général en faisant un return !(*this == rhs) ou bien un return !operator==(rhs) dès qu'ils ne sont pas triviaux, je peux me permettre de toute façon de ne tester que operator==.

    Par curiosité à quoi ressemble le code de ton opérateur ? Il est vraiment si compliqué que ça ?

    MAT.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Non, il est vrai que le code de mon opérateur est trivial. Mais disons que j'ai tendance à vouloir tout tester pour le principe d'anti-regression. Ce qui prend du temps. Mais comme c'est pour un projet perso que je fais dans mes heures de loisir, c'est pas trop grave.

    Je me demande si s'était dans un cadre professionel. Prendre une heure pour écrire des tests par classe. Je sais pas si c'est rentable.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par cdm1024 Voir le message
    Prendre une heure pour écrire des tests par classe. Je sais pas si c'est rentable.
    Oh si, surtout si les tests sont faits avant le code !
    Et puis non seulement avec l'habitude on va de plus en plus vite à les écrire, mais on apprend aussi à ne justement pas perdre du temps à tester ce qui n'a pas vraiment de raison de ne pas fonctionner.

    Après je trouve que ça passe beaucoup mieux quand tout le monde dans l'équipe en comprend l'intérêt et accepte de jouer le jeu.
    C'est sûr que quelqu'un qui reste à développer "à l'ancienne" va voir tout ça comme une gène et va par moment ralentir toute l'équipe (en faisant un "commit" avec des tests qui échouent et qui plantent le build sur le serveur d'intégration mais aussi en bidouillant à l'arrache les tests pour qu'ils passent quand il fait une modification).

    Pour moi le code de test fait partie intégrante du code source et doit être traité en tant que tel : nettoyages, remaniements, simplifications, suppression des duplications, etc..
    Et puis je trouve aussi que les tests ça fait partie d'une toute autre philosophie de développement et de manière d'articuler le code (quand on utilise des mock objects).
    Au final on remarque vraiment bien la conséquence tests simples => code simple...

    Bref, les tests c'est bien !

    MAT.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/09/2012, 15h16
  2. comment faire des menus avec ASP MVC
    Par beaudelaire dans le forum ASP.NET MVC
    Réponses: 7
    Dernier message: 17/05/2011, 16h23
  3. comment faire des schémas avec latex
    Par abdali dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 6
    Dernier message: 06/06/2008, 17h25
  4. Comment faire des itérations avec JSF & richFaces?
    Par gettingway dans le forum JSF
    Réponses: 2
    Dernier message: 20/05/2008, 15h03
  5. Comment faire des liens avec excel ?
    Par Vinceeboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/10/2007, 20h45

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