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]") . "[0m" . 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) . "[1m" . $number . "[0m" . PHP_EOL; }); return $event; }
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; } if (count($exceptions = $suite->getExceptions())) { echo 'Exceptions' . PHP_EOL;