Основываясь на ответе потребителя, где я получил, я получил очень хороший подход, в котором я могу создать несколько тестов, используя макрос регистрации в одну строку с таким количеством параметров, которое я хочу.
Просто определите класс параметров:
class Param
{
public:
Param( int param1, std::string param2 ) :
m_param1( param1 ),
m_param2( param2 )
{
}
int m_param1;
std::string m_param2;
};
Заставьте ваше тестовое устройство использовать его в качестве "нетипичного параметра шаблона" (я думаю, что так оно и называется):
template <Param& T>
class my_test : public CPPUNIT_NS::TestFixture
{
CPPUNIT_TEST_SUITE(my_test<T>);
CPPUNIT_TEST( doProcessingTest );
CPPUNIT_TEST_SUITE_END();
void doProcessingTest()
{
std::cout << "Testing with " << T.m_param1 << " and " << T.m_param2 << std::endl;
};
};
Имейте небольшой макрос, создающий параметр и регистрирующий новый тестовый прибор:
#define REGISTER_TEST_WITH_PARAMS( name, param1, param2 ) \
Param name( param1, param2 ); \
CPPUNIT_TEST_SUITE_REGISTRATION(my_test<name>);
Наконец, добавьте столько тестов, сколько хотите:
REGISTER_TEST_WITH_PARAMS( test1, 1, "foo" );
REGISTER_TEST_WITH_PARAMS( test2, 3, "bar" );
Выполнение этого теста даст вам:
my_test<class Param test1>::doProcessingTestTesting with 1 and foo : OK
my_test<class Param test2>::doProcessingTestTesting with 3 and bar : OK
OK (2)
Test completed, after 0 second(s). Press enter to exit