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

Bibliothèques Discussion :

[CppUnit] context.addTest & boost::bind


Sujet :

Bibliothèques

  1. #1
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut [CppUnit] context.addTest & boost::bind
    Bonjour,

    Je voudrais savoir s'il est possible d'utiliser boost::bind dans le cadre de CppUnit.

    Au lieu de faire
    J'utilise le code suivant (qui marche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string const name = "test";
    context.addTest(new CPPUNIT_NS::TestCaller<TestFixtureType>( context.getTestNameFor(name), &TestFixtureType::Test::test, context.makeFixture()));
    avec la classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Test : public CppUnit::TestFixture
    {
    CPPUNIT_TEST_SUITE(Test);  	
    CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS(addTests);
    CPPUNIT_TEST_SUITE_END();
     
    ...
     
    static void addTests(CPPUNIT_NS::TestSuiteBuilderContext<TestFixtureType> & context)
    {
    	std::string const name = "test";
    	context.addTest(new CPPUNIT_NS::TestCaller<TestFixtureType>(context.getTestNameFor(name), &TestFixtureType::Test::test, context.makeFixture()));
    }
     
    void test() {...}
     
    void test2(int val) {...}
    };
    Mais j'aurais voulu faire la même chose en passant par boost::bind.

    Donc j'espérais naïvement faire quelque chose comme ça dans addTests

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string const name = "test";
    context.addTest(new CPPUNIT_NS::TestCaller<TestFixtureType>(context.getTestNameFor(name), boost::bind(&TestFixtureType::Test::test, _1), context.makeFixture())
    Bon évidemment ça ne marche pas. En fait, je ne sais pas quoi mettre à la place du placeholder _1. Peut-être "context.makeFixture()" ?

    Sinon j'ai essayé comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::string const name = "test";
    typedef void (TestFixtureType::* Method)();
    boost::function1<void, TestFixtureType*> function = boost::bind(&TestFixtureType::Test::test, context.makeFixture());
    Method method = *function.target<Method>();
    context.addTest(new CPPUNIT_NS::TestCaller<TestFixtureType>(context.getTestNameFor(name), method, context.makeFixture()));
    Le but c'est d'ensuite ajouter des tests avec la méthode "test2" en faisant varier val.

    Flo.

  2. #2
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Bon, finalement je me suis rabattu sur boost::test qui me permet l'utilisation de boost::bind pour pointer mes fonctions de test.

    Flo.

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

Discussions similaires

  1. boost::bind et membre de classe
    Par Trunks dans le forum Boost
    Réponses: 2
    Dernier message: 20/10/2009, 08h58
  2. Télécharger et installer boost::bind
    Par Electroniktor dans le forum Boost
    Réponses: 6
    Dernier message: 16/06/2008, 13h08
  3. for_each + boost::bind = crash ?
    Par Patriarch24 dans le forum C++
    Réponses: 8
    Dernier message: 21/09/2007, 09h47
  4. Utilité de boost::bind ?
    Par swirtel dans le forum Boost
    Réponses: 5
    Dernier message: 07/09/2007, 16h27
  5. [Boost::bind] Cdecl / Callback
    Par superspag dans le forum Boost
    Réponses: 10
    Dernier message: 18/06/2007, 21h32

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