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 utiliser boost.unit_test_framework


Sujet :

Boost C++

  1. #1
    Membre confirmé
    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
    Par défaut Comment utiliser boost.unit_test_framework
    Bonjour,

    J'essaie d'utiliser le framework de test unitaire de boost, mais je n'arrive même pas à démarrer.

    D'après un tutoriel sur Internet j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <boost/test/unit_test.hpp>
    using namespace boost::unit_test_framework;
     
    test_suite*
    init_unit_test_suite( int argc, char* argv[] )
    {
        test_suite* test=BOOST_TEST_SUITE("const_string test");
        return test;
    }
     
    // EOF
    Cependant il n'explique pas comment compiler ce code pour le tester. J'ai compiler avec la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     g++ const_string_test.cc -lboost_unit_test_framework
    et j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $:~/dvlp/test/boost_test/a$ g++ const_string_test.cc -lboost_unit_test_framework
    /usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../lib/crt1.o: In function `_start':
    (.text+0x18): undefined reference to `main'
    collect2: ld returned 1 exit status
    Donc, j'aimerai savoir comment on met en oeuvre le framework de boost de test unitaire.

    De plus j'aimerai savoir comment vous l'utilisez:
    • Où vous placer le code de test ?
    • Comment vous faîtes pour compiler les tests et exécuter le programme?
    • J'aimerai que quand mon makefile compile, je test les classes, puis je compile le code, est ce possible, et si oui, avec les grandes lignes svp ?


    Merci d'avance de vos réponses

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu as bien consulté la documentation ? Si mes souvenirs sont bons, tout y est expliqué.

  3. #3
    Membre confirmé
    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
    Par défaut
    j'avais trouvé cette doc, mais les exemples en fonctionnement pas et je ne trouve pas où ils indiquent comment exécuter les tests

  4. #4
    Membre Expert

    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
    Par défaut
    Salut,

    Hmm je pense que c'est un vieux tutoriel que tu as trouvé, la méthode préconisée depuis quelques temps déjà c'est en utilisant les tests automatiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #define BOOST_AUTO_TEST_MAIN
    #include <boost/test/auto_unit_test.hpp>
     
    BOOST_AUTO_TEST_CASE( MonTest )
    {
        BOOST_FAIL( "test" );
    }
    Et c'est tout.
    Tu compiles, tu lies avec boost_unit_test_framework et tu exécutes.

    Le BOOST_AUTO_TEST_MAIN ne doit être mis que dans une seule unité de compilation (un seul .cpp parmi ceux de tes tests).

    Sinon pour répondre à tes autres questions :
    . on fait une application de tests par bibliothèque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     - src - libraries - my_library
           \- tests - my_library_test
    Avec un fichier .cpp de tests pour chaque classe ayant besoin de tests (MyClass.h/.cpp -> MyClassTest.cpp)

    . sous visual studio on met le lancement de l'exécutable de tests en post-build du projet de tests, sous ant on fait un exec juste après la compilation, dans un makefile on ferait pareil si on en avait j'imagine...
    . soit je comprends mal soit tu veux lancer les tests avant de compiler le code à tester, et je vois mal comment c'est possible...

    edit : les 'on' c'est pour dire dans ma boite...

    MAT.

  5. #5
    Membre Expert

    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
    Par défaut
    Tiens c'est expliqué ici dans cette documentation particulièrement touffue et mal faite de Boost.Test....
    Mais bon y'a trop rien de plus que l'exemple que j'ai donné en fait...

    MAT.

  6. #6
    Membre confirmé
    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
    Par défaut
    merci de votre aide.

    Mon problème que j'ai résolu est que l'instruction de compilation n'était pas bonne. Je compilai avec la librairie dynamique et pas static

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ const_string_test.cc -static  -lboost_unit_test_framework
    Pour mes autres questions. La dernière était particulièrement flou en effet, parce que ca l'était dans ma pensée.

    Ce que je voudrais savoir c'est comment chaine ton les tests d'un ensemble de classes dans des fichers différents d'un répertoire (package) . Et pour plusieurs package, jusqu'à l'application au complet.

    Merci

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Petite question...
    La bonne façon de faire est d'inclure dans le fichier qui contient le code ci-dessous tous les .h des classes que l'on veut tester ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define BOOST_AUTO_TEST_MAIN
    #include <boost/test/auto_unit_test.hpp>
    #include "maclasse.h"
     
    BOOST_AUTO_TEST_CASE( MonTest )
    {
    maclasse instance;
        BOOST_FAIL( ...);
    }
    Thx!

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

Discussions similaires

  1. Comment utiliser Boost sur visual studio
    Par bobo023 dans le forum Boost
    Réponses: 1
    Dernier message: 14/08/2011, 17h24
  2. Comment utiliser Boost avec Qt
    Par lisco dans le forum Qt
    Réponses: 3
    Dernier message: 12/05/2009, 22h05
  3. Boost.Graph : Comment utiliser tout ça?
    Par Xanto dans le forum Boost
    Réponses: 1
    Dernier message: 08/05/2009, 19h48
  4. Comment utiliser Boost::spirit ?
    Par kimels dans le forum Boost
    Réponses: 8
    Dernier message: 11/06/2008, 19h04
  5. [BOOST]Comment utiliser la lib boost.python
    Par Invité dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 30/01/2006, 11h35

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