PHPUnitManual:19.4

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
19.4 PHPUnit_Extensions_TestDecorator 의 subclass 작성

PHPUnit_Extensions_TestDecorator 의 subclass 로 test case 나 test suite 를 wrapping 하고 Decorator design pattern 을 사용하여, 각 테스트의 실행 전후에 원하는 명령을 처리할 수 있습니다.


PHPUnit 에는, PHPUnit_Extensions_RepeatedTest 와 PHPUnit_Extensions_TestSetup 의 2가지 구상 (concrete) 테스트 decorator 가 포함되어 있습니다. PHPUnit_Extensions_RepeatedTest 는 테스트를 반복 실행하여, 각 테스트가 모두 성공한 경우에 성공으로 처리합니다. PHPUnit_Extensions_TestSetup 는 제6장 Fixture 를 참조하세요.


예19.4 "RepeatedTest Decorator" 는, test decorator PHPUnit_Extensions_RepeatedTest 의 일부를 발췌한 것입니다. 오리지널 test decorators 작성할 때 참고하세요.


예19.4 RepeatedTest Decorator

<?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;
    }
}
?>


Notes