Beispiel #1
0
 void RunAllTests()
 {
     #ifdef DEBUG_UNITTEST
     std::cout << "Running tests\n";
     #endif
     
     for( auto factoryFunction : TestFactories() )
     {
         ITest* test = static_cast<ITest*>( factoryFunction.second() );
         
         try
         {
             std::cout << "Running test \"" << test->GetTestName() << "\"\n";
             test->Run();
             std::cout << "... Test \"" << test->GetTestName() << "\" successful\n";
         }
         catch( Assertions::NotEqualException& ex )
         {
             std::cout << "... Test \"" << test->GetTestName() << "\" failed:\n" << ex.what() << "\n";
         }
         catch( Assertions::EqualException& ex )
         {
             std::cout << "... Test \"" << test->GetTestName() << "\" failed:\n" << ex.what() << "\n";
         }
         catch( Assertions::ExceptionNotThrownException& ex )
         {
             std::cout << "... Test \"" << test->GetTestName() << "\" failed:\n" << ex.what() << "\n";
         }
         catch( Assertions::WrongExceptionCaughtException& ex )
         {
             std::cout << "... Test \"" << test->GetTestName() << "\" failed:\n" << ex.what() << "\n";
         }
         catch( Assertions::ReportCoreFailureException& ex )
         {
             /// @todo Better way to report un-recoverable failure, like this one, when You can't
             ///       continue with testing
             std::cout << "Received Core Failure exception. This means we cannot continue "
                         << "testing because we cannot ensure test results will be correct.\n"
                         << "The message of Core Failure exception:\n"
                         << ex.what() << '\n';
             delete test;
             return;
         }
         catch(...)
         {
             std::cout << "... Test \"" << test->GetTestName() << "\" failed:\n{unknown}\n";
             throw;
         }
         
         delete test;
     }
 }