PHPUnitManual:19.4

From 흡혈양파의 번역工房
Jump to navigation Jump to search
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