int runCppunitTestSuite(TestResultOutputType outputType)
{
    icl_core::os::lxrtStartup();
    icl_core::logging::initialize();

    // Informiert Test-Listener ueber Testresultate
    CPPUNIT_NS::TestResult testresult;

    // Listener zum Sammeln der Testergebnisse registrieren
    CPPUNIT_NS::TestResultCollector collectedresults;
    testresult.addListener(&collectedresults);

    // Test-Suite ueber die Registry im Test-Runner einfuegen
    CPPUNIT_NS::TestRunner testrunner;
    testrunner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());

    // Resultate ausgeben
    switch (outputType)
    {
    case eTROT_Text:
    {
        icl_core::TestListener progress;
        testresult.addListener(&progress);

        testrunner.run(testresult);

        CPPUNIT_NS::TextOutputter textoutputter(&collectedresults, std::cerr);
        textoutputter.write();
        break;
    }
    case eTROT_Compiler:
    {
        icl_core::TestListener progress;
        testresult.addListener(&progress);

        testrunner.run(testresult);

        CPPUNIT_NS::CompilerOutputter compileroutputter(&collectedresults, std::cerr);
        compileroutputter.write();
        break;
    }
    case eTROT_Xml:
    {
        testrunner.run(testresult);

        CPPUNIT_NS::XmlOutputter xmloutputter(&collectedresults, std::cerr, "UTF-8");
        xmloutputter.write();
        break;
    }
    }

    icl_core::logging::shutdown();
    icl_core::os::lxrtShutdown();

    // Rueckmeldung, ob Tests erfolgreich waren
    return collectedresults.wasSuccessful() ? 0 : 1;
}
int CppUnitTestRunner::Run(std::vector<CPPUNIT_NS::Test *>& tests)
{
    CPPUNIT_NS::TestRunner					runner;
    CPPUNIT_NS::TestResult					controller;
    CPPUNIT_NS::TestResultCollector			result;
    CPPUNIT_NS::BriefTestProgressListener	progress;
    CPPUNIT_NS::CompilerOutputter			outputter( &result, std::cerr );
    std::string								xmlFileName   = (s_XmlPath=="" ? "" : s_XmlPath + "\\") + m_TestSuiteName + ".xml";
    std::ofstream							output_file( xmlFileName.c_str() , std::ios::out );
    CPPUNIT_NS::XmlOutputter                 xmloutputter( &result, output_file );

    controller.addListener( &result );        
    controller.addListener( &progress );      

    for each (CPPUNIT_NS::Test * test in tests)
        runner.addTest(test);

    runner.run( controller );

    outputter.write();
    xmloutputter.write();

    return result.wasSuccessful() ? EXIT_SUCCESS : EXIT_FAILURE;
}