/**
  * The main entry point
  *
  * @throws BuildException
  */
 function main()
 {
     $tests = array();
     if ($this->printsummary) {
         $fe = new FormatterElement();
         $fe->setClassName('SummaryPHPUnit2ResultFormatter');
         $fe->setUseFile(false);
         $this->formatters[] = $fe;
     }
     foreach ($this->batchtests as $batchtest) {
         $tests = array_merge($tests, $batchtest->elements());
     }
     foreach ($this->formatters as $fe) {
         $formatter = $fe->getFormatter();
         $formatter->setProject($this->getProject());
         if ($fe->getUseFile()) {
             $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile());
             $writer = new FileWriter($destFile->getAbsolutePath());
             $formatter->setOutput($writer);
         } else {
             $formatter->setOutput($this->getDefaultOutput());
         }
         $formatter->startTestRun();
     }
     foreach ($tests as $test) {
         $this->execute(new PHPUnit2_Framework_TestSuite(new ReflectionClass($test)));
     }
     foreach ($this->formatters as $fe) {
         $formatter = $fe->getFormatter();
         $formatter->endTestRun();
     }
     if ($this->testfailed) {
         throw new BuildException("One or more tests failed");
     }
 }