PHPUnit_Extensions_OutputTestCaseクラスを継承すると、 echoやprint等による標準出力結果をテストすることができます。
class PHPUnit_Extensions_OutputTestCase extends PHPUnit_Framework_TestCase {
/* 出力結果を正規表現でチェックする */
void expectOutputRegex(string $regularExpression);
/* 出力結果を文字列でチェックする */
void expectOutputString(string $expectedString);
bool setOutputCallback(callable $callback);
}
例は本家より抜粋。
<?php
require_once 'PHPUnit/Extensions/OutputTestCase.php';
class OutputTest extends PHPUnit_Extensions_OutputTestCase
{
/**
* 'foo'が表示されることをテスト
*/
public function testExpectFooActualFoo()
{
$this->expectOutputString('foo');
print 'foo';
}
/**
* 'bar'が表示されることをテスト。
* (実際には'baz'が表示されるのでテストは失敗となる)
*/
public function testExpectBarActualBaz()
{
$this->expectOutputString('bar');
print 'baz';
}
}
?>
phpunit OutputTest PHPUnit 3.2.10 by Sebastian Bergmann. .F Time: 0 seconds There was 1 failure: 1) testExpectBarActualBaz(OutputTest) Failed asserting that two strings are equal. expected string <bar> difference < x> got string <baz> FAILURES! Tests: 2, Failures: 1.