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 :

[Boost.test] utiliser la suite par default


Sujet :

Boost C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut [Boost.test] utiliser la suite par default
    Bonjour,

    Je suis en train de migrer des tests depuis cppUnit vers Boost.test.
    J'arrive à compiler et executer un test case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // g++ a_test.cpp -static  -lboost_unit_test_framework
    #define BOOST_AUTO_TEST_MAIN
    #define BOOST_TEST_MODULE a_test
    #include <boost/test/unit_test.hpp>
     
    BOOST_AUTO_TEST_CASE( constructors_test )
    {
        BOOST_CHECK_EQUAL(1, 1);
    }
    Mais je ne comprends pas commen je peux creer un seul executable pour tous mes fichiers de tests. Le problème est comme utiliser BOOST_AUTO_TEST_MAIN et quelle est la démarche ensuite pour compiler. (Je suis sous linux.)

    D'avance merci

    PS : Il y a effectivement une documentation et des anciens posts mais ils ne sont pas assez explicites.

  2. #2
    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,

    Un seul de tes fichiers .cpp doit faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define BOOST_AUTO_TEST_MAIN
    #include <boost/test/auto_unit_test.hpp>
     
    BOOST_AUTO_TEST_CASE( my_test_1 )
    {
    }
     
    BOOST_AUTO_TEST_CASE( my_test_2 )
    {
    }
    Les autres .cpp font juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <boost/test/auto_unit_test.hpp>
     
    BOOST_AUTO_TEST_CASE( my_test_3 )
    {
    }
     
    BOOST_AUTO_TEST_CASE( my_test_4 )
    {
    }
    Ensuite tu compiles tous tes .cpp et tu lies tout ça avec la bibliothèque de boost.test en un exécutable, et voilà.

    MAT.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Cela correspond effectivement à la documentation. Mais à partir de ce point, je ne sais pas du tout commen compiler le tout en un seul executable.

  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
    Tu sais compiler un exécutable à partir d'un fichier .cpp contenant un main ?

    Comment tu faisais avec CppUnit ?

    MAT.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Pour ccpunit, j'utilisais un makefile et le compilateur g++.
    Dans un premier temps je compile les fichiers puis je lie le tout.

    example :
    g++ -o monfichier.o -c monfichier.cpp
    g++ -o monexecutable monfichier.o monfichier1.o -lcppunit

    En ce qui concerne Boost.unit, je peux lier avec boost_unit_test_framework ce qui donne pour la second ligne
    g++ -o monexecutable monfichier.o monfichier1.o -static -lboost_unit_test_framework

    Mais cela produit des erreurs, à priori non liées à mon code.


    EDIT : Les erreurs sont résolues.

    Il n'est pas permit d'utiliser le meme nom de fonction dans des fichiers differents. Comme les noms étaient très ambigus, je ne les avais pas remarqués dans le log des erreurs. Ton exemple utilise bien des noms differents mais ce n'était pas explicitement marqué comme une necessité.

    BOOST_TEST_MODULE ne semble pas être un moyen pour résoudre ce problème. Existe t il un moyen pour eviter cela?

  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 TabrisLeFol Voir le message
    Il n'est pas permit d'utiliser le meme nom de fonction dans des fichiers differents.
    En fait le meilleur moyen pour résoudre ce problème est de donner un nom explicite à chaque test, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BOOST_AUTO_TEST_CASE( creating_a_smurf_from_a_non_existing_file_throws )
    {
        ...
    }
    MAT.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Et c'est une pratique qui a du sens également.
    Ok. Merci.

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

Discussions similaires

  1. Utiliser InnoDB comme moteur par default
    Par JANGO5 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/07/2013, 14h48
  2. Réponses: 6
    Dernier message: 05/05/2010, 16h21
  3. Réponses: 3
    Dernier message: 18/01/2010, 17h54
  4. Réponses: 2
    Dernier message: 16/06/2008, 16h34
  5. [VB6] Détecter le navigateur par default
    Par GeDeon35 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/12/2004, 17h52

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