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 CPPUNIT_TEST(test)
avec la classe
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()));
Mais j'aurais voulu faire la même chose en passant par boost::bind.
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) {...} };
Donc j'espérais naïvement faire quelque chose comme ça dans addTests
Bon évidemment ça ne marche pas. En fait, je ne sais pas quoi mettre à la place du placeholder _1. Peut-être "context.makeFixture()" ?
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())
Sinon j'ai essayé comme ça
Le but c'est d'ensuite ajouter des tests avec la méthode "test2" en faisant varier val.
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()));
Flo.
Partager