PHPUnitManual:19.4
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;
}
}
?>