實現(xiàn) PHPUnit_Framework_Test

2018-02-24 15:42 更新

實現(xiàn) PHPUnit_Framework_Test

PHPUnit_Framework_Test 接口是比較狹義的,十分容易實現(xiàn)。舉例來說,你可以自行為 PHPUnit_Framework_Test 編寫一個類似于 PHPUnit_Framework_TestCase 的實現(xiàn)來運行數(shù)據(jù)驅(qū)動測試。

Example?14.6, “一個數(shù)據(jù)驅(qū)動的測試”展示了一個數(shù)據(jù)驅(qū)動的測試用例類,對來自 CSV 文件內(nèi)的值進行比較。這個文件內(nèi)的每個行看起來類似于 foo;bar,第一個值是期望值,第二個值則是實際值。

Example?14.6.?一個數(shù)據(jù)驅(qū)動的測試

<?php
class DataDrivenTest implements PHPUnit_Framework_Test
{
    private $lines;

    public function __construct($dataFile)
    {
        $this->lines = file($dataFile);
    }

    public function count()
    {
        return 1;
    }

    public function run(PHPUnit_Framework_TestResult $result = NULL)
    {
        if ($result === NULL) {
            $result = new PHPUnit_Framework_TestResult;
        }

        foreach ($this->lines as $line) {
            $result->startTest($this);
            PHP_Timer::start();
            $stopTime = NULL;

            list($expected, $actual) = explode(';', $line);

            try {
                PHPUnit_Framework_Assert::assertEquals(
                  trim($expected), trim($actual)
                );
            }

            catch (PHPUnit_Framework_AssertionFailedError $e) {
                $stopTime = PHP_Timer::stop();
                $result->addFailure($this, $e, $stopTime);
            }

            catch (Exception $e) {
                $stopTime = PHP_Timer::stop();
                $result->addError($this, $e, $stopTime);
            }

            if ($stopTime === NULL) {
                $stopTime = PHP_Timer::stop();
            }

            $result->endTest($this, $stopTime);
        }

        return $result;
    }
}

$test = new DataDrivenTest('data_file.csv');
$result = PHPUnit_TextUI_TestRunner::run($test);
?>
PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

.F

Time: 0 seconds

There was 1 failure:

1) DataDrivenTest
Failed asserting that two strings are equal.
expected string <bar>
difference      <  x>
got string      <baz>
/home/sb/DataDrivenTest.php:32
/home/sb/DataDrivenTest.php:53

FAILURES!
Tests: 2, Failures: 1.
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號