PHP 5 でなくても動作する、PHP 4 用の PHPUnit もあります。 PHP 4 のオブジェクトモデルには制限があるので、PHP 4 用の PHPUnit は (PHP 5 版とは異なり) JUnit の完全な移植ではありません。また、PHP 5 版の機能のうち、コードカバレッジ機能などはありません。
PEAR インストーラで PHP 4 用の PHPUnit をインストールするには、 次のコマンドを実行します。
pear install -f http://pear.phpunit.de/get/PHPUnit-1.3.3.tgz
PHP 4 用の PHPUnit で使われるテストケースクラスは、PHP 5 用の PHPUnit
で使われるものと似ています。本質的な違いは、こちらのクラスは
PHPUnit_TestCase (このクラス自身は
PHPUnit_Assert を継承しており、
ここでアサーションメソッドが定義されています) を継承しているということです。
ArrayTest テストケースを、PHP 4 用の PHPUnit
で使用できるように書き直したものが
例A.1「PHPUnit 1.x 用のテストを書く」
です。
例A.1 PHPUnit 1.x 用のテストを書く
<?php
require_once 'PHPUnit/TestCase.php';
class ArrayTest extends PHPUnit_TestCase
{
var $_fixture;
function setUp()
{
$this->_fixture = array();
}
function testNewArrayIsEmpty()
{
$this->assertEquals(0, sizeof($this->_fixture));
}
function testArrayContainsAnElement()
{
$this->_fixture[] = 'Element';
$this->assertEquals(1, sizeof($this->_fixture));
}
}
?>
PHP 4 用の PHPUnit には、TextUI テストランナーがありません。 PHP 4 用の PHPUnit でテストを実行する際の一般的な方法は、 テストスイートを書いた後で、それを 例A.2「PHPUnit 1.x のテストケースを実行する」 のように手動で実行することです。
例A.2 PHPUnit 1.x のテストケースを実行する
<?php
require_once 'ArrayTest.php';
require_once 'PHPUnit.php';
$suite = new PHPUnit_TestSuite('ArrayTest');
$result = PHPUnit::run($suite);
print $result->toString();
?>
TestCase arraytest->testnewarrayisempty() passed TestCase arraytest->testarraycontainsanelement() passed
PHP 4 用の PHPUnit にはあって PHP 5 用の PHPUnit にはまだ存在しない機能のひとつに、 図A.1「PHP-GTK のテストランナー」 のようなグラフィカルなテストランナーがあります。 これは PHP-GTK で作成されています。