從 PHPUnit_Extensions_TestDecorator 派生子類

2018-02-24 15:42 更新

從 PHPUnit_Extensions_TestDecorator 派生子類

可以將測試用例或者測試套件包裝在 PHPUnit_Extensions_TestDecorator 的子類中并運(yùn)用 Decorator(修飾器)設(shè)計(jì)模式來在測試運(yùn)行前后執(zhí)行一些動作。

PHPUnit 了包含了一個具體的測試修飾器:PHPUnit_Extensions_RepeatedTest。它用于重復(fù)運(yùn)行某個測試,并且只在全部循環(huán)中都成功時計(jì)為成功。

Example?14.5, “RepeatedTest 修飾器”展示了測試修飾器 PHPUnit_Extensions_RepeatedTest 的一個刪減版本,用以說明如何編寫你自己的測試修飾器。

Example?14.5.?RepeatedTest 修飾器

<?php
require_once 'PHPUnit/Extensions/TestDecorator.php';

class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator
{
    private $timesRepeat = 1;

    public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1)
    {
        parent::__construct($test);

        if (is_integer($timesRepeat) &&
            $timesRepeat >= 0) {
            $this->timesRepeat = $timesRepeat;
        }
    }

    public function count()
    {
        return $this->timesRepeat * $this->test->count();
    }

    public function run(PHPUnit_Framework_TestResult $result = NULL)
    {
        if ($result === NULL) {
            $result = $this->createResult();
        }

        for ($i = 0; $i < $this->timesRepeat && !$result->shouldStop(); $i++) {
            $this->test->run($result);
        }

        return $result;
    }
}
?>
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號