Как запустить один тест с UnitTest ++?

Как запустить одиночный тест с 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 ++ такую ​​функцию и, если да, то какой синтаксис?

11
задан JBentley 21 January 2014 в 17:18
поделиться

1 ответ

попробуйте использовать его в качестве 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
13
ответ дан 3 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: