more test runner refactoring
This commit is contained in:
parent
c4bcc9082b
commit
b4837595ee
@ -1,15 +1,29 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
abstract class BaseTestRunner {
|
abstract class TestRunner implements Countable {
|
||||||
|
|
||||||
protected $tests;
|
protected $tests;
|
||||||
protected $listeners;
|
protected $listeners;
|
||||||
protected $options;
|
protected $options;
|
||||||
|
|
||||||
|
private $startTime;
|
||||||
|
private $endTime;
|
||||||
|
|
||||||
public function __construct(array $tests = array(), array $listeners = array(), array $options = array()) {
|
public function __construct(array $tests = array(), array $listeners = array(), array $options = array()) {
|
||||||
$this->tests = $tests;
|
$this->tests = $tests;
|
||||||
$this->listeners = $listeners;
|
$this->listeners = $listeners;
|
||||||
$this->options = (!empty($options)) ? $this->parseOptions($options) : array();
|
$this->options = (!empty($options)) ? $this->parseOptions($options) : array();
|
||||||
|
|
||||||
|
$this->startTime = -1;
|
||||||
|
$this->endTime = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final function getStartTime() {
|
||||||
|
return $this->startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final function getEndTime() {
|
||||||
|
return $this->endTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final function warn($message) {
|
public final function warn($message) {
|
||||||
@ -79,7 +93,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract function run();
|
public final function run() {
|
||||||
|
foreach ($this->listeners as $listener) {
|
||||||
|
$listener->beforeTestRunner($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->startTime = microtime(true);
|
||||||
|
$this->publishResults($this->runTests());
|
||||||
|
$this->endTime = microtime(true);
|
||||||
|
|
||||||
|
foreach ($this->listeners as $listener) {
|
||||||
|
$listener->afterTestRunner($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function count() {
|
||||||
|
return count($this->tests);
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract function getAllowableOptions();
|
protected abstract function getAllowableOptions();
|
||||||
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
class ConsoleTestRunner extends BaseTestRunner {
|
|
||||||
|
|
||||||
public function run() {
|
|
||||||
self::printMeta();
|
|
||||||
$this->publishResults($this->runTests());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getAllowableOptions() {
|
|
||||||
return array(
|
|
||||||
'recursive' => 'boolean',
|
|
||||||
'bootstrap' => 'string'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function printMeta() {
|
|
||||||
fwrite(STDOUT, Product::NAME . ' ' . Product::VERSION . ' (build date: ' . Product::DATE . ')' . "\n");
|
|
||||||
fwrite(STDOUT, ' by ' . Product::AUTHOR . "\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
14
src/TUnit/framework/TestRunners.php
Normal file
14
src/TUnit/framework/TestRunners.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class ConsoleTestRunner extends TestRunner {
|
||||||
|
|
||||||
|
protected function getAllowableOptions() {
|
||||||
|
return array(
|
||||||
|
'recursive' => 'boolean',
|
||||||
|
'bootstrap' => 'string'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
class ConsoleListener extends TestListener {
|
class ConsoleListener extends TestListener {
|
||||||
|
|
||||||
private $verbosity;
|
protected $verbosity;
|
||||||
private $currentLineLength;
|
protected $currentLineLength;
|
||||||
|
|
||||||
const LINE_LENGTH = 64;
|
const LINE_LENGTH = 64;
|
||||||
|
|
||||||
@ -16,11 +16,11 @@
|
|||||||
$this->currentLineLength = 0;
|
$this->currentLineLength = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function out($text) {
|
protected function out($text) {
|
||||||
fwrite(STDOUT, $text);
|
fwrite(STDOUT, $text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function err($text) {
|
protected function err($text) {
|
||||||
fwrite(STDERR, $text);
|
fwrite(STDERR, $text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,6 +34,17 @@
|
|||||||
$this->currentLineLength = strlen($text);
|
$this->currentLineLength = strlen($text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function beforeTestRunner(TestRunner $runner) {
|
||||||
|
$this->out(Product::getVersionString() . "\n");
|
||||||
|
$this->out(' by ' . Product::AUTHOR . "\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function afterTestRunner(TestRunner $runner) {
|
||||||
|
$elapsedTime = $runner->getEndTime() - $runner->getStartTime();
|
||||||
|
$numTests = (count($runner) === 1) ? '1 test' : count($runner) . ' tests';
|
||||||
|
$this->out('Ran ' . $numTests . ' in ' . round($elapsedTime, 3) . ' seconds' . "\n");
|
||||||
|
}
|
||||||
|
|
||||||
public function beforeTestSuite(TestSuite $suite) {
|
public function beforeTestSuite(TestSuite $suite) {
|
||||||
switch ($this->verbosity) {
|
switch ($this->verbosity) {
|
||||||
case self::VERBOSITY_HIGH:
|
case self::VERBOSITY_HIGH:
|
||||||
|
@ -6,10 +6,18 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function beforeTestSuite(TestSuite $suite) {
|
public function beforeTestRunner(TestRunner $runner) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function afterTestRunner(TestRunner $runner) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function beforeTestSuite(TestSuite $suite) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function afterTestSuite(TestSuite $suite) {
|
public function afterTestSuite(TestSuite $suite) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -67,7 +75,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function publishTestResult(TestResult $result) {
|
public function publishTestResult(TestResult $result) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
/**
|
/**
|
||||||
* Autoload manifest
|
* Autoload manifest
|
||||||
*
|
*
|
||||||
* Autogenerated by manifester.php on 2009-06-19 20:34:30
|
* Autogenerated by manifester.php on 2009-06-19 20:50:38
|
||||||
*
|
*
|
||||||
* @package TUnit
|
* @package TUnit
|
||||||
* @version 0.4.0
|
* @version 0.4.0
|
||||||
@ -13,13 +13,12 @@
|
|||||||
return array(
|
return array(
|
||||||
'Assert' => 'TUnit/framework/Assert.php',
|
'Assert' => 'TUnit/framework/Assert.php',
|
||||||
'Autoloader' => 'TUnit/util/Autoloader.php',
|
'Autoloader' => 'TUnit/util/Autoloader.php',
|
||||||
'BaseTestRunner' => 'TUnit/framework/BaseTestRunner.php',
|
|
||||||
'Cli' => 'TUnit/util/cli.php',
|
'Cli' => 'TUnit/util/cli.php',
|
||||||
'CliSwitch' => 'TUnit/util/cli.php',
|
'CliSwitch' => 'TUnit/util/cli.php',
|
||||||
'CliSwitchCollection' => 'TUnit/util/cli.php',
|
'CliSwitchCollection' => 'TUnit/util/cli.php',
|
||||||
'CombinedTestResult' => 'TUnit/framework/result/CombinedTestResult.php',
|
'CombinedTestResult' => 'TUnit/framework/result/CombinedTestResult.php',
|
||||||
'ConsoleListener' => 'TUnit/framework/listeners/ConsoleListener.php',
|
'ConsoleListener' => 'TUnit/framework/listeners/ConsoleListener.php',
|
||||||
'ConsoleTestRunner' => 'TUnit/framework/TestRunner.php',
|
'ConsoleTestRunner' => 'TUnit/framework/TestRunners.php',
|
||||||
'Constraint' => 'TUnit/framework/constraints/Constraint.php',
|
'Constraint' => 'TUnit/framework/constraints/Constraint.php',
|
||||||
'DefaultConstraint' => 'TUnit/framework/constraints/DefaultConstraint.php',
|
'DefaultConstraint' => 'TUnit/framework/constraints/DefaultConstraint.php',
|
||||||
'EmptyConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
'EmptyConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
||||||
@ -57,6 +56,7 @@
|
|||||||
'TestListener' => 'TUnit/framework/listeners/TestListener.php',
|
'TestListener' => 'TUnit/framework/listeners/TestListener.php',
|
||||||
'TestMethod' => 'TUnit/framework/test/TestMethod.php',
|
'TestMethod' => 'TUnit/framework/test/TestMethod.php',
|
||||||
'TestResult' => 'TUnit/framework/result/TestResult.php',
|
'TestResult' => 'TUnit/framework/result/TestResult.php',
|
||||||
|
'TestRunner' => 'TUnit/framework/BaseTestRunner.php',
|
||||||
'TestSuite' => 'TUnit/framework/test/TestSuite.php',
|
'TestSuite' => 'TUnit/framework/test/TestSuite.php',
|
||||||
'Testable' => 'TUnit/framework/test/Testable.php',
|
'Testable' => 'TUnit/framework/test/Testable.php',
|
||||||
'TrueConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
'TrueConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
||||||
|
@ -95,8 +95,20 @@
|
|||||||
const DATE = '$datetime';
|
const DATE = '$datetime';
|
||||||
/**#@-*/
|
/**#@-*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
private function __construct() {}
|
private function __construct() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a human-readable version string
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getVersionString() {
|
||||||
|
return self::NAME . ' ' . self::VERSION . ' (' . self::DATE . ')';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Loading…
Reference in New Issue
Block a user