| Prev | Next |
PHPUnit では、テストクラスの基底クラスである PHPUnit_Framework_TestCase を拡張するための方法を提供しています。 これにより、出力内容やパフォーマンス低下のテストができるようになります。
メソッドの実行結果を確かめる方法として、(echo や print などによる) 出力が期待通りのものかを調べたいこともあるでしょう。 PHPUnit_Extensions_OutputTestCase クラスは、PHP の 出力バッファリング 機能を使用してこの仕組みを提供します。
例 8.1 では、PHPUnit_Extensions_OutputTestCase のサブクラスを作成し、期待する出力内容を expectOutputString() メソッドで設定する方法を示します。 期待通りの出力が得られなかった場合は、そのテストは失敗という扱いになります。
例 8.1: PHPUnit_Extensions_OutputTestCase の使用法
<?php
require_once 'PHPUnit/Extensions/OutputTestCase.php';
class OutputTest extends PHPUnit_Extensions_OutputTestCase
{
public function testExpectFooActualFoo()
{
$this->expectOutputString('foo');
print 'foo';
}
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.
表 8.1 PHPUnit_Extensions_OutputTestCase が提供するメソッドをまとめたものです。
表8.1 OutputTestCase
| メソッド | 意味 |
|---|---|
void expectOutputRegex(string $regularExpression)
|
出力が正規表現 $regularExpression にマッチするであろうという予測を設定します。
|
void expectOutputString(string $expectedString)
|
出力が文字列 $expectedString と等しくなるであろうという予測を設定します。
|
bool setOutputCallback(callable $callback)
|
たとえば出力時の正規化などに使用するコールバック関数を設定します。 |
PHPUnit_Extensions_PerformanceTestCase を継承したテストクラスを使用すると、 関数やメソッドの実行が制限時間内に終わったかどうかなどをテストすることができます。
PHPUnit_Extensions_PerformanceTestCase のサブクラスを作成してその setMaxRunningTime() メソッドを使用し、実行時間の最大値を制限する方法を 例 8.2 で示します。 もしテストが制限時間内に終了しなければ、そのテストは失敗という扱いになります。
例 8.2: PHPUnit_Extensions_PerformanceTestCase の使用法
<?php
require_once 'PHPUnit/Extensions/PerformanceTestCase.php';
class PerformanceTest extends PHPUnit_Extensions_PerformanceTestCase
{
public function testPerformance()
{
$this->setMaxRunningTime(2);
sleep(1);
}
}
?>
表 8.2 は、PHPUnit_Extensions_PerformanceTestCase が実装しているメソッドをまとめたものです。
表8.2 PerformanceTestCase
| メソッド | 意味 |
|---|---|
void setMaxRunningTime(int $maxRunningTime)
|
テストの所要時間の最大値を (秒単位で) $maxRunningTime に設定します。
|
integer getMaxRunningTime()
|
このテストの最大所要時間を返します。 |
PHPUnit_Framework_TestCase には、これら以外にも PHPUnit_Extensions_Database_TestCase や PHPUnit_Extensions_SeleniumTestCase といった拡張があります。 これらについては、それぞれ 第 9 章 と 第 18 章 で説明します。
| Prev | Next |
Copyright © 2005-2011 Sebastian Bergmann.