#pragma once
#include
class TestCaseT : public CPPUNIT_NS::TestFixture
{
CPPUNIT_TEST_SUITE(TestCaseT);
CPPUNIT_TEST(TestFunc);
CPPUNIT_TEST(TestFunc);
CPPUNIT_TEST_SUITE_END();
protected:
template void TestFunc()
{
// to test
}
};
< /code>
Однако, когда моя функция принимает больше параметров, она не может компилировать: < /p>
class TestCaseT : public CPPUNIT_NS::TestFixture
{
CPPUNIT_TEST_SUITE(TestCaseT);
CPPUNIT_TEST(TestFunc);
CPPUNIT_TEST(TestFunc);
CPPUNIT_TEST(TestFunc);
CPPUNIT_TEST_SUITE_END();
protected:
template void TestFunc()
{
// to test
}
};
< /code>
ошибка: < /p>
test.h(8,5): warning C4002: trop d'arguments pour l'appel de macro de type fonction 'CPPUNIT_TEST'
1>test.h(9,5): warning C4002: trop d'arguments pour l'appel de macro de type fonction 'CPPUNIT_TEST'
1>test.h(8,5): error C2059: erreur de syntaxe : ')'
1>test.h(9,5): error C2059: erreur de syntaxe : ')'
1>test.h(10,5): error C2059: erreur de syntaxe : ')'
1>test.h(11,5): error C2143: erreur de syntaxe : absence de ';' avant '}'
...
< /code>
macro cppunit_test определяется, как ниже: < /p>
#define CPPUNIT_TEST( testMethod ) \
CPPUNIT_TEST_SUITE_ADD_TEST( \
( new CPPUNIT_NS::TestCaller( \
context.getTestNameFor( #testMethod), \
&TestFixtureType::testMethod, \
context.makeFixture() ) ) )
Я пытаюсь зарегистрировать некоторые тесты cppunit parametrized. < /p> Этот код компилируется и работает просто нормально: < /p> [code]#pragma once
#include
class TestCaseT : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(TestCaseT); CPPUNIT_TEST(TestFunc); CPPUNIT_TEST(TestFunc); CPPUNIT_TEST_SUITE_END();
protected: template void TestFunc() { // to test } }; < /code> Однако, когда моя функция принимает больше параметров, она не может компилировать: < /p> class TestCaseT : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(TestCaseT); CPPUNIT_TEST(TestFunc); CPPUNIT_TEST(TestFunc); CPPUNIT_TEST(TestFunc); CPPUNIT_TEST_SUITE_END();
protected: template void TestFunc() { // to test } }; < /code> ошибка: < /p> test.h(8,5): warning C4002: trop d'arguments pour l'appel de macro de type fonction 'CPPUNIT_TEST' 1>test.h(9,5): warning C4002: trop d'arguments pour l'appel de macro de type fonction 'CPPUNIT_TEST' 1>test.h(8,5): error C2059: erreur de syntaxe : ')' 1>test.h(9,5): error C2059: erreur de syntaxe : ')' 1>test.h(10,5): error C2059: erreur de syntaxe : ')' 1>test.h(11,5): error C2143: erreur de syntaxe : absence de ';' avant '}' ... < /code> macro cppunit_test определяется, как ниже: < /p> #define CPPUNIT_TEST( testMethod ) \ CPPUNIT_TEST_SUITE_ADD_TEST( \ ( new CPPUNIT_NS::TestCaller( \ context.getTestNameFor( #testMethod), \ &TestFixtureType::testMethod, \ context.makeFixture() ) ) ) [/code] Есть ли способ это исправить?