Prev Next

付録C 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 で使用できるように書き直したものが 例 C.1 です。

例 C.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 でテストを実行する際の一般的な方法は、 テストスイートを書いた後で、それを 例 C.2 のように手動で実行することです。

例 C.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 にはまだ存在しない機能のひとつに、 図 C.1 のようなグラフィカルなテストランナーがあります。 これは PHP-GTK で作成されています。

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

PHP-GTK のテストランナー

Prev Next
1. 自動テスト
2. PHPUnit の目標
3. PHPUnit のインストール
4. PHPUnit 用のテストの書き方
データプロバイダ
例外のテスト
PHP のエラーのテスト
5. コマンドラインのテストランナー
6. Fixtures
tearDown() よりも setUp()
バリエーション
Fixture の共有
7. テストの構成
スイートレベルのセットアップ
8. テストケースの拡張
出力内容のテスト
パフォーマンス低下のテスト
9. データベースのテスト
データセット
Flat XML データセット
XML データセット
操作
データベースのテストのコツ
10. 不完全なテスト・テストの省略
不完全なテスト
テストの省略
11. モックオブジェクト
自己シャント
スタブ
12. テストの進め方
開発中のテスト
デバッグ中のテスト
13. テストファーストプログラミング
銀行口座の例
14. コードカバレッジ解析
カバーするメソッドの指定
コードブロックの無視
ファイルのインクルードや除外
15. テストのその他の使用法
アジャイルな文書作成
複数チームでのテスト
16. ログ出力
XML 形式
コードカバレッジ (XML)
JavaScript Object Notation (JSON)
Test Anything Protocol (TAP)
GraphViz マークアップ
テストデータベース
17. 雛形ジェネレータ
アノテーション
18. PHPUnit と Selenium
Selenium RC
PHPUnit_Extensions_SeleniumTestCase
19. 継続的インテグレーション
CruiseControl
phpUnderControl
Apache Maven
20. PHPUnit の実装
21. PHPUnit API
概要
PHPUnit_Framework_Assert
PHPUnit_Framework_Test
PHPUnit_Framework_TestCase
PHPUnit_Framework_TestSuite
PHPUnit_Framework_TestResult
パッケージの構成
22. PHPUnit の拡張
PHPUnit_Framework_TestCase のサブクラスの作成
アサートクラスの作成
PHPUnit_Extensions_TestDecorator のサブクラスの作成
PHPUnit_Framework_Test の実装
PHPUnit_Framework_TestResult のサブクラスの作成
PHPUnit_Framework_TestListener の実装
新しいテストランナーの作成
A. アサーション
B. XML 設定ファイル
テストスイート
グループ
コードカバレッジ対象のファイルの追加や除外
ログ出力
PMD ルール
PHP INI 項目やグローバル変数の設定
C. PHP 4 用の PHPUnit
D. 目次
E. 参考文献
F. 著作権