付録A PHP 4 用の PHPUnit

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 で作成されています。

図A.1 PHP-GTK のテストランナー

PHP-GTK のテストランナー