Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++

C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Quelles solutions de tests utilisez-vous en C++ en 2013 ?
Boost.test, inclus dans la célèbre collections de bibliothèques 19 39,58%
cppUnit, un projet inspiré de JUnit 7 14,58%
CTest, la solution proposée avec CMaket CDash 4 8,33%
CxxTest, un autre projet inspiré de JUnit 1 2,08%
GTest, la solution de Google 6 12,50%
QtTest, inclus dans le framework Qt 4 8,33%
UnitTest++ 1 2,08%
Un framework personnel 2 4,17%
Autre 4 8,33%
Aucune, je ne fais pas de tests unitaires 12 25,00%
Sondage à choix multiple Votants: 48. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse Actualité déjà publiée
 
Outils de la discussion
Vieux 05/02/2013, 12h04   #1
r0d
Expert Confirmé Sénior
 
Inscription : août 2004
Messages : 3 672
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : août 2004
Messages : 3 672
Points : 4 433
Points : 4 433
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 ?
r0d est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 05/02/2013, 18h12   #2
jblecanard
Membre Expert
 
Jean-Bernard
Inscription : mars 2007
Messages : 1 001
Détails du profil
Informations personnelles :
Nom : Jean-Bernard
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 1 001
Points : 1 628
Points : 1 628
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.
jblecanard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/02/2013, 22h43   #3
poukill
Rédacteur/Modérateur
 
Avatar de poukill
 
Inscription : février 2006
Messages : 2 152
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : février 2006
Messages : 2 152
Points : 1 891
Points : 1 891
Je vais suivre de près aussi, ça m'intéresse !
__________________
FAQ C++ | Page personnelle | Une bonne adresse
poukill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2013, 22h46   #4
LinuxUser
Membre éprouvé
 
Avatar de LinuxUser
 
Inscription : avril 2007
Messages : 748
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 748
Points : 418
Points : 418
J'ai jamais utilisé, mais on m'a très fortement conseillé cppUnit
http://matthieu-brucher.developpez.c...s/cpp/cppUnit/
LinuxUser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2013, 00h50   #5
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 546
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 546
Points : 4 087
Points : 4 087
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 !
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2013, 14h19   #6
JolyLoic
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 675
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 38
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 4 675
Points : 9 899
Points : 9 899
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.
JolyLoic est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/02/2013, 16h30   #7
Luc Hermitte
Expert Confirmé Sénior

 
Avatar de Luc Hermitte
 
Inscription : août 2003
Messages : 4 523
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 4 523
Points : 5 734
Points : 5 734
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.
__________________
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.
Luc Hermitte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2013, 13h12   #8
galerien69
Membre chevronné
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 450
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 450
Points : 689
Points : 689
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)
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2013, 13h52   #9
r0d
Expert Confirmé Sénior
 
Inscription : août 2004
Messages : 3 672
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : août 2004
Messages : 3 672
Points : 4 433
Points : 4 433
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).
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2013, 14h43   #10
Luc Hermitte
Expert Confirmé Sénior

 
Avatar de Luc Hermitte
 
Inscription : août 2003
Messages : 4 523
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 4 523
Points : 5 734
Points : 5 734
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.
__________________
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.
Luc Hermitte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2013, 17h03   #11
jblecanard
Membre Expert
 
Jean-Bernard
Inscription : mars 2007
Messages : 1 001
Détails du profil
Informations personnelles :
Nom : Jean-Bernard
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 1 001
Points : 1 628
Points : 1 628
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.
jblecanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2013, 17h58   #12
galerien69
Membre chevronné
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 450
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 450
Points : 689
Points : 689
ici un exemple:

Code :
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
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2013, 09h40   #13
jblecanard
Membre Expert
 
Jean-Bernard
Inscription : mars 2007
Messages : 1 001
Détails du profil
Informations personnelles :
Nom : Jean-Bernard
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 1 001
Points : 1 628
Points : 1 628
Ca ira je pourrais me débrouiller avec tes références, merci pour l'astuce !
jblecanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2013, 11h00   #14
CleeM
Membre du Club
 
Étudiant
Inscription : juin 2007
Messages : 204
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2007
Messages : 204
Points : 59
Points : 59
Envoyer un message via MSN à CleeM
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.
CleeM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2013, 18h11   #15
David Fleury
Membre confirmé
 
Avatar de David Fleury
 
Inscription : mars 2004
Messages : 239
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 239
Points : 268
Points : 268
Bonjour,

sur tous mes projets, pro et perso, j'utilise un fork maison de cpp unit lite, très simple à utiliser.
David Fleury est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2013, 10h48   #16
ketan
Membre habitué
 
Inscription : février 2008
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 110
Points : 129
Points : 129
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.
ketan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2013, 10h50   #17
alex.buisson
Membre à l'essai
 
Inscription : mai 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 18
Points : 21
Points : 21
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 .....
alex.buisson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2013, 11h32   #18
germinolegrand
Rédacteur/Modérateur
 
Avatar de germinolegrand
 
Homme Germino Legrand
Développeur de jeux vidéo
Inscription : octobre 2010
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Germino Legrand
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 : 370
Points : 1 942
Points : 1 942
A voté : Aucune, je ne fais pas de tests unitaires.
__________________
Choisis un travail que tu aimes et tu n'auras pas à travailler un seul jour de ta vie.
germinolegrand est actuellement connecté   Envoyer un message privé Réponse avec citation 11
Vieux 11/02/2013, 13h31   #19
guillaume07
Débutant
 
Inscription : mai 2006
Messages : 615
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 615
Points : 184
Points : 184
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 .
guillaume07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2013, 12h30   #20
jblecanard
Membre Expert
 
Jean-Bernard
Inscription : mars 2007
Messages : 1 001
Détails du profil
Informations personnelles :
Nom : Jean-Bernard
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 1 001
Points : 1 628
Points : 1 628
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).
jblecanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h00.


 
 
 
 
Partenaires

Hébergement Web