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

Affichage des résultats du sondage: Quelles solutions de tests utilisez-vous en C++ en 2013 ?

Votants
51. Vous ne pouvez pas participer à ce sondage.
  • Boost.test, inclus dans la célèbre collections de bibliothèques

    19 37,25%
  • cppUnit, un projet inspiré de JUnit

    8 15,69%
  • CTest, la solution proposée avec CMaket CDash

    4 7,84%
  • CxxTest, un autre projet inspiré de JUnit

    1 1,96%
  • GTest, la solution de Google

    6 11,76%
  • QtTest, inclus dans le framework Qt

    4 7,84%
  • UnitTest++

    1 1,96%
  • Un framework personnel

    2 3,92%
  • Autre

    4 7,84%
  • Aucune, je ne fais pas de tests unitaires

    14 27,45%
Sondage à choix multiple
C++ Discussion :

Quelles solutions de tests utilisez-vous en C++ en 2013 ?


Sujet :

C++

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut Quelles solutions de tests utilisez-vous en C++ en 2013 ?


    Bonjour,

    J'aimerais avoir vos avis concernant les différentes solutions de tests unitaires en c++.

    Parmi celles que vous avez déjà utilisées,

    quelles sont celles qui sont les plus faciles à installer, configurer (automatisation), utiliser et maintenir ?
    sur quel(s) système(s) d'exploitation fonctionnent-elles ?
    sont-elles gratuites ?
    sont-elles dépendantes d'un IDE donné ?
    sont-elles fiables ?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut !

    Je n'en ai pas testé beaucoup mais j'aime bien GTest, pour les raisons suivantes:
    - Facilité d'usage.
    - Facilité de mise en place : simple et peu de dépendances, facile à intégrer dans un projet.
    - Facilité pour rejouer un test ou set de tests donné (ça parait trivial et pourtant ce que ça peut être chiant avec certains !)
    - Customisation aisée des formats de sorties avec les "listeners" qui permettent de générer des rapports sous différentes formes.

    Inconvénient remarqué: de base, GTest s'utilise en ne compilant qu'un seul exécutable qui fait tout. Du coup, un segfault peut te pourrir un replay de nuit par exemple car plus aucun test ne sera joué après.

    Concernant tes points:
    - Intégration: GTest ne fait rien à part te donner les clés pour générer des rapports sous le format qui te convient. Dans mon cas je générais des TAP pour Jenkins, c'est fait en 10 lignes de code c'est bidon.
    - Plateforme: A priori Windows/Mac/Linux. Testé sous linux
    - Licence: New BSD
    - Dépendance à un IDE: niet, s'intègre très bien dans Eclipse CDT.
    - Fiabilité : Difficile à mesurer, aucun problème à déplorer pour ma part.
    Find me on github

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Je vais suivre de près aussi, ça m'intéresse !

  4. #4
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    J'ai jamais utilisé, mais on m'a très fortement conseillé cppUnit
    http://matthieu-brucher.developpez.c...s/cpp/cppUnit/

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    J'utilisais CPPUnit lors de ma précédente mission : je sais pas pour la mise en place, mais à l'utilisation c'est fort simple !
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    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
    J'ai utilisé cppunit et boost.test, et un tout petit peu la bibliothèque livrée dans visual studio 2012.

    Je trouve cppUnit inutilement lourd, à la mise en place comme à l'utilisation (besoin d'enregistrer manuellement les cas de test, besoin de comparer des valeurs de même type, et pas simplement de types compatibles (par moyen de faire un test entre une std::string et un litéral de type char const *...)).

    J'avais préféré boost::test (mieux packagé, rien à faire pour la mise en place, tests auto enregistrée, bonne instrumentation du code (fuites mémoires, désactivation des asserts...)).
    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.

  7. #7
    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
    J'ai un souvenir de CppUnit v1 inutilement complexe à utiliser (p.ex. tests à recenser 2 fois), avec avec beaucoup de manque dans les trucs testables. Pour moi il ne doit sa bonne réputation qu'à son nom pour ceux qui viennent de jUnit. Pour un public qui connait le C++, il y a mieux (la profusion de frameworks de TU en C++ est d'ailleurs pour moi un indice que CppUnit est un échec alors que jUnit me semble dominer l'écosystème Java)

    A l'époque j'utilisais CxxTest (.sf.net) qui reposait sur un script Perl et qui avait un vocabulaire bien plus riche. Le seul défaut était lié à l'affichage de données utilisateur pas toujours simple à mettre en oeuvre. Depuis le script a été réécrit en python et je n'ai plus eu l'occasion de l'essayer.

    Depuis donc j'ai essayé boost.test. Il n'est pas inutilement lourd, il fait son job, son vocabulaire est suffisamment riche. Le format des erreurs est bon (i.e. même format que celui de tous les outils *nix). S'il fallait lui trouver un défaut : le besoin de disposer du .so pour pouvoir s'en servir.
    Je n'ai pas essayé google.test, il m'a l'air comparable.

    Pour info j'utilise CTest pour encapsuler la gestion de tous les tests. Plein d'avantages relativement à CDash, relativement à la possibilité de tester des résultats produits (stdout/fichier(s)) (bien que la macro pour faire ça est à écrirebidouiller soi même, et que c'est très très mal documenté).
    Un défaut pour moi toutefois: les lignes sont préfixées par les numéros des tests (/des threads dans le cas de la compilation), j'ai dû rajouter un hack dans ma conf vim pour pouvoir nettoyer ce parasitage.
    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...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Hello,

    Pour ma part c'est coup de coeur pour gtest. (1.6)
    Les macros sont claires, assert, expect, cest facile d'executer un test simples, ecrire un test est simple.

    Cppunit, pour moi cest trop complique. Creer des classes de tests, des sources etc... brr.

    Ctest jai teste aussi, de memoire cest appeler lexecutable plein de fois avec differents parametres, je trouve ca bof. Mais cest vrai qu'associe au reporting CDash, c'est sympa.

    Par contre, il est possible de se servir de gtest avec une bonne vieille macro (CMakeLists) couplee a CTest (pour pouvoir beneficier de la facilite decriture de tests avec gtest+reporting propose par CDash)

  9. #9
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    En effet gtest à l'air vraiment bien. De plus, j'ai vu qu'il existe déjà quelques logiciels à priori sérieux, se basant sur gtest, qui proposent des améliorations intéressantes.

    Mais boost a 2 avantages qui me paraissent non négligeables: boost est souvent intégré au cycle de développement (donc ça ne rajoute pas de dépendance supplémentaire), et boost inspire plus confiance (nous l'utilisons depuis longtemps).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  10. #10
    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
    Quels paramètres supplémentaires pour CTest ?

    Ton TU soit tu l'appelles directement si ça te fais plaisir, soir tu l'appelles via CTest (soit juste lui, soit tous les TU, soit certains TU (identifiés par numéro ou regex sur le nom), au besoin).
    Après il y a des paramètres bien cachées qui permettent de lancer l'exécution des TUs tout en calculant des taux de couverture du code, ou via valgrind.
    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...

  11. #11
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par galerien69 Voir le message
    Par contre, il est possible de se servir de gtest avec une bonne vieille macro (CMakeLists) couplee a CTest (pour pouvoir beneficier de la facilite decriture de tests avec gtest+reporting propose par CDash)
    Si t'as déjà fait ça, ça m'intéresse.
    Find me on github

  12. #12
    Invité
    Invité(e)
    Par défaut
    ici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FOREACH(GTEST_SOURCE_FILE ${GTEST_SOURCE_FILES})
      FILE(STRINGS ${GTEST_SOURCE_FILE} GTEST_NAMES REGEX ^TEST)
      FOREACH(GTEST_NAME ${GTEST_NAMES})
        STRING(REGEX REPLACE ["\) \(,"] ";" GTEST_NAME ${GTEST_NAME})
        LIST(GET GTEST_NAME 1 GTEST_GROUP_NAME)
        LIST(GET GTEST_NAME 3 GTEST_NAME)
        ADD_TEST(${GTEST_GROUP_NAME}.${GTEST_NAME}
    ${EXECUTABLE_OUTPUT_PATH}/${BIN_NAME}
    --gtest_filter=${GTEST_GROUP_NAME}.${GTEST_NAME})
      ENDFOREACH()
    ENDFOREACH()
    ce qui consiste à appeler lexecutable avec en paramètre le nombre du test parsé par cette macro et ce pour chaque test.
    Du coup, ya pas besoin de "référencer" la liste des tests dans le CMakeLists, c'est fait par la macro qui parse les fichiers!

    J'ai plus les sources, mais je peux reconstruire un ex si nécessaire, c'est assez immédiat

  13. #13
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Ca ira je pourrais me débrouiller avec tes références, merci pour l'astuce !
    Find me on github

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Bonjour à tous,

    Je suis complètement novice dans les tests unitaires, et d'un point de vue de débutant, je peux vous dire que CppUnit n'est pas facile à mettre en place.

    Je ne peux pas comparer avec beaucoup d'outils, mais j'utilise actuellement UnitTest++ qui est beaucoup plus facile à mettre en place, et est apparemment reconnu pour être léger d'utilisation.

  15. #15
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    sur tous mes projets, pro et perso, j'utilise un fork maison de cpp unit lite, très simple à utiliser.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    Personnellement, avant j'utilisais WinUnit (http://winunit.codeplex.com/) puisque c'était le résultat qui sortait le plus souvent dans mes recherches google.

    Depuis que j'ai vu ce topic, je me lance dans l'utilisation de GTest.

  17. #17
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Points : 45
    Points
    45
    Par défaut YAffut
    Yet Another Framework for Unit-Testing : http://members.home.nl/rutger.van.beusekom/

    Très simple à mettre en place et à utiliser .....

  18. #18
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    A voté : Aucune, je ne fais pas de tests unitaires.

  19. #19
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    je conseil Boost.test, dans ma boite on a testé google test cppunit et on a adopté boost.test. Sous visual en créer un petit plugin il est possible de ne lancer qu'un seul test au lieu de tous, très pratique .

  20. #20
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    Sous visual en créer un petit plugin il est possible de ne lancer qu'un seul test au lieu de tous, très pratique.
    Dommage d'aller jusqu'à la création d'un plugin pour ça Dans boost.test je ne sais pas mais dans gtest c'est une option à passer sur l'exécutable généré (et ça prend des patterns et tout, c'est pas mal).
    Find me on github

Discussions similaires

  1. Quelles versions d'Access utilisez-vous en 2009 ?
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 16
    Dernier message: 19/05/2016, 18h17
  2. Quelles solutions open source utilisez-vous et pourquoi ?
    Par Hinault Romaric dans le forum Logiciels Libres & Open Source
    Réponses: 11
    Dernier message: 28/11/2013, 13h45
  3. Quelles solutions de backup utilisez-vous ?
    Par slyz0r dans le forum Administration système
    Réponses: 8
    Dernier message: 18/05/2011, 22h29
  4. [Newsletter] OVH : Quelle solution de newsletter utilisez vous ?
    Par zepokpok dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/03/2011, 23h24

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