Как запустить одиночный тест с UnitTest ++?
Я запускаю UnitTest ++ из коробки как есть. Моя основная
функция выглядит следующим образом:
int main()
{
printf("diamond test v0.1 %s\n\n",TIMESTAMP);
diamond::startup();
UnitTest::RunAllTests();
diamond::shutdown();
printf("press any key to continue...");
getc(stdin);
}
Для отладки я хотел бы написать что-то вроде UnitTest :: RunSingleTests ("MyNewUnitTest");
вместо UnitTest :: RunAllTests ( );
. Предоставляет ли UnitTest ++ такую функцию и, если да, то какой синтаксис?
попробуйте использовать его в качестве main () для unittest (я фактически поместил это в файл и добавил в библиотеку unittest, чтобы при связывании с библиотекой исполняемый файл автоматически использовал этот main () . очень удобно.)
int main( int argc, char** argv )
{
if( argc > 1 )
{
//if first arg is "suite", we search for suite names instead of test names
const bool bSuite = strcmp( "suite", argv[ 1 ] ) == 0;
//walk list of all tests, add those with a name that
//matches one of the arguments to a new TestList
const TestList& allTests( Test::GetTestList() );
TestList selectedTests;
Test* p = allTests.GetHead();
while( p )
{
for( int i = 1 ; i < argc ; ++i )
if( strcmp( bSuite ? p->m_details.suiteName
: p->m_details.testName, argv[ i ] ) == 0 )
selectedTests.Add( p );
p = p->next;
}
//run selected test(s) only
TestReporterStdout reporter;
TestRunner runner( reporter );
return runner.RunTestsIf( selectedTests, 0, True(), 0 );
}
else
{
return RunAllTests();
}
}
вызвать с аргументами для запуска одного теста:
> myexe MyTestName
или одного набора
> myexe suite MySuite