Exemple #1
0
 private function getTestEvent()
 {
     $event = new Event();
     $runner = $this;
     $event->on('preRun', function ($test) {
         echo 'Running Tests for: ' . get_class($test) . PHP_EOL;
     });
     $event->on('preMethod', function ($method, $test) use($runner) {
         $runner->methodTime[$method]['start'] = microtime(true);
     });
     $event->on('postMethod', function ($method, $test) use($runner) {
         $runner->methodTime[$method]['stop'] = microtime(true);
         $className = get_class($test);
         $start = $runner->methodTime[$method]['start'];
         $stop = $runner->methodTime[$method]['stop'];
         $time = $stop - $start;
         $runner->testTime += $time;
         $number = (string) number_format($time, 3);
         echo "[" . ($test->isMethodPassed($method) ? '42m[PASS]' : "41m[FAIL]") . "" . str_pad(' ' . $className . '::' . $method . ' ', self::PADDING - strlen($number)) . $number . PHP_EOL;
     });
     $event->on('postRun', function ($test) use($runner) {
         $number = number_format($runner->testTime, 3);
         $runner->totalTime += $runner->testTime;
         $runner->testTime = 0;
         echo str_pad('Total for ' . get_class($test) . ': ', self::PADDING + 6 - strlen($number), ' ', STR_PAD_LEFT) . "" . $number . "" . PHP_EOL;
     });
     return $event;
 }
Exemple #2
0
 public function run(Event\Test $event = null)
 {
     if ($event) {
         $event->preRun($this);
     }
     $this->setUp();
     $this->fixtures->install();
     foreach ($this->methods as $method) {
         $this->currentMethod = $method;
         $this->methodExceptions[$method] = new ArrayIterator();
         $this->methodAssertions[$method] = new AssertionArray();
         if ($event) {
             $event->preMethod($method, $this);
         }
         set_error_handler($this->generateErrorHandler($method));
         if ($this->benchmarks->has($method)) {
             $this->benchmarks->get($method)->start();
         }
         try {
             $this->{$method}();
         } catch (Exception $e) {
             $assertionException = new AssertionException($e);
             $this->exceptions->append($assertionException);
             $this->methodExceptions[$method]->append($assertionException);
         }
         if ($this->benchmarks->has($method)) {
             $this->benchmarks->get($method)->stop();
         }
         restore_error_handler();
         if ($event) {
             $event->postMethod($method, $this);
         }
     }
     $this->tearDown();
     $this->fixtures->uninstall();
     if ($event) {
         $event->postRun($this);
     }
     return $this;
 }
Exemple #3
0
use Testes\Coverage\Coverage;
use Testes\Finder\Finder;
use Testes\Autoloader;
use Testes\Event;
$base = __DIR__ . '/..';
require $base . '/src/Testes/Autoloader.php';
Autoloader::register();
Autoloader::addPath($base . '/tests');
Autoloader::addPath($base . '/src');
Autoloader::addPath($base . '/vendor/devco');
Autoloader::addPath($base . '/vendor/devco/event-emitter/src');
$coverage = new Coverage();
$finder = new Finder($base . '/tests', 'Test');
$coverage->start();
echo PHP_EOL;
$event = new Event\Test();
$event->on('postRun', function ($test) {
    echo $test->getAssertions()->isPassed() && !$test->getExceptions()->count() ? '.' : 'F';
});
$suite = $finder->run($event);
echo PHP_EOL . PHP_EOL . sprintf('Ran %d test%s.', count($suite), count($suite) === 1 ? '' : 's');
$analyzer = $coverage->stop()->addDirectory($base . '/src')->is('\\.php$');
echo PHP_EOL . PHP_EOL . 'Coverage: ' . $analyzer->getPercentTested() . '%' . PHP_EOL . PHP_EOL;
if (count($assertions = $suite->getAssertions()->getFailed())) {
    echo 'Assertions' . PHP_EOL;
    echo '----------' . PHP_EOL;
    foreach ($assertions as $ass) {
        echo '  ' . $ass->getTestClass() . ':' . $ass->getTestLine() . ' ' . $ass->getMessage() . PHP_EOL;
    }
    echo PHP_EOL;
}