Stagehand_TestRunner ユーザーガイド¶
このユーザーガイドでは Stagehand_TestRunner 2.18.0 について説明します。
English | 日本語
テストランナーコマンド¶
ノート: それぞれのテスティングフレームワークをご利用いただくには、それぞれのプロダクトが必要となります。ただし、PHPT については、PHPUnit が必要となります。
テスティングフレームワークとテストランナーコマンドとの対応関係は以下のとおりです。
| UNIX | Windows | |
|---|---|---|
| PHPUnit | phpunitrunner | phpunitrunner.bat |
| CIUnit | ciunitrunner | ciunitrunner.bat |
| SimpleTest | simpletestrunner | simpletestrunner.bat |
| CakePHP | cakerunner | cakerunner.bat |
| PHPT | phptrunner | phptrunner.bat |
| PHPSpec | phpspecrunner | phpspecrunner.bat |
テストの実行¶
指定されたディレクトリに含まれるテストの実行¶
phpunitrunner TEST_DIRECTORY phpunitrunner -R TEST_DIRECTORY
指定されたディレクトリをスキャンし、テストを実行します。-R オプションが指定された場合、サブディレクトリを再帰的にスキャンします。
ノート: テスト対象として複数のファイルおよびディレクトリを指定することができます。

指定されたファイルに含まれるテストの実行¶
phpunitrunner TEST_FILE
指定されたファイルに対してのみテストを実行します。
ノート: テスト対象として複数のファイルおよびディレクトリを指定することができます。

指定されたファイルの指定されたテストのみの実行¶
phpunitrunner -m METHOD1,METHOD2,... TEST_FILE
指定されたファイルに含まれる指定されたテストを実行します。カンマ区切りのリストによって複数のメソッドを指定することができます。
ノート: CLASS::METHOD のように完全修飾メソッド名を指定することができます。また、メソッド名は大文字、小文字を区別しません。

指定されたクラスのテストのみの実行¶
phpunitrunner --classes=CLASS1,CLASS2,... TEST_FILE
指定されたファイルに含まれる指定されたクラスのテストを実行します。カンマ区切りのリストによって複数のクラスを指定することができます。
指定された PHP スクリプトのテスト実行前のプリロード¶
phpunitrunner -p FILE ...
インクルードパス, オートローディング、エラーハンドリングなど、テスト実行の準備を行うスクリプトを指定することができます。スクリプトは、テストランナー本体がロードされる前に評価されます。
実際の例を見てみましょう。下記は、Piece Framework のプロダクト、Stagehand_AccessControl のスクリプトです。
<?php
error_reporting(E_ALL | E_STRICT);
set_include_path(realpath(dirname(__FILE__) . '/../src') . PATH_SEPARATOR .
get_include_path()
);
require_once 'PHPUnit/Framework.php';
require_once 'Stagehand/Autoload.php';
$loader = Stagehand_Autoload::legacyLoader();
$loader->addNamespace('Stagehand');
Stagehand_Autoload::register($loader);
Stagehand_LegacyError_PHPError::enableConversion();
指定されたディレクトリの変更の監視および変更検出時のテストの実行¶
phpunitrunner -a TEST_DIRECTORY phpunitrunner -a -w MONITORING_DIRECTORY1,MONITORING_DIRECTORY2,... TEST_DIRECTORY
指定されたディレクトリについて、ファイルおよびディレクトリの変更を監視します。変更が検出されると、直ちにテストが実行されます。サポートされている変更の種類は下記のとおりです。
- ファイルおよびディレクトリの作成
- ファイルおよびディレクトリの削除
- ファイルの変更
デフォルトの監視対象はテストディレクトリですが、-w オプションによって 1 つ以上のディレクトリを追加することができます。これによって、テストコードだけでなくプロダクションコードや構成ファイルなども監視することができます。
スキャンにかかった実際の時間に基づいて監視間隔が自動的に調整されます。下限は 5 秒です。
最初の失敗またはエラーの際の停止¶
phpunitrunner --stop-on-failure ...
最初の失敗またはエラーが発生した時にテストの実行を停止します。
テストファイルのパターンの指定¶
phpunitrunner --test-file-pattern=PATTERN ...
正規表現リテラルによってテストファイルのパターンを指定します。
デフォルト値は以下のとおりです。
| PHPUnit | Test(?:Case)?\.php$ |
|---|---|
| CIUnit | ^test.+\.php$ |
| SimpleTest | Test(?:Case)?\.php$ |
| CakePHP | \.test\.php$ |
| PHPT | - |
| PHPSpec | Spec\.php$ |
テスト結果のリポート¶
テスト結果の色付け¶
phpunitrunner -c ...
ノート: この機能をご利用いただくには、Console_Color 1.0.2 以降が必要となります。この機能は Windows ではご利用いただけません。
結果の色付けによって、それぞれのテストおよびテスト全体がパスしたかどうかがわかりやすくなります。
テスト結果の通知¶
phpunitrunner -n ... phpunitrunner -n --growl-password=PASSWORD ...
テストの結果を通知します。パスワードが必要な場合、--growl-password オプションによって指定することができます。

通知に使用されるコマンドはお使いの OS により異なります。
ノート: コマンドにはパスを通しておく必要があります。
| OS | コマンド | 必要なソフトウェア |
|---|---|---|
| Windows | growlnotify | Growl for Windows |
| Mac OS X | growlnotify | Growl |
| Linux | notify-send | libnotify-bin パッケージ (Ubuntu の場合) |
JUnit XML フォーマットによる、指定されたファイルへのテスト結果のロギング¶
phpunitrunner --log-junit=FILE ... phpunitrunner --log-junit=FILE --log-junit-realtime ...
指定されたファイルにテストの結果を JUnit XML フォーマットで書き込みます。また、--log-junit-realtime オプションを指定することにより要素毎にリアルタイムでテスト結果が書かれるようになります。
詳細な進捗リポートの出力¶
phpunitrunner -v ...
この機能を使うことによって、PHP の Fatal error などでテストの実行が途中で終了する場合に、問題を引き起こしているテストを簡単に特定することができます。

テスティングフレームワーク固有の機能¶
PHPUnit¶
XML 設定ファイルによる PHPUnit 実行環境の構成¶
phpunitrunner --phpunit-config=FILE ...
指定された XML 設定ファイルによって PHPUnit 実行環境を構成します。詳細については PHPUnit Manual - 付録C XML 設定ファイル をご覧ください。
ノート: <testsuites> 要素はサポートされません。
CIUnit¶
CIUnit tests ディレクトリのパスの指定¶
ciunitrunner --ciunit-path=DIRECTORY ...
CIUnit tests ディレクトリのパスを指定します。デフォルトでは現在の作業ディレクトリが使用されます。
CakePHP¶
ノート: SimpleTest パッケージは vendors ディレクトリに vendors/simpletest として配置してください。
app フォルダのパスの指定¶
cakerunner --cakephp-app-path=DIRECTORY ...
app フォルダのパスを指定します。デフォルトでは現在の作業ディレクトリが使用されます。
CakePHP ライブラリフォルダのパスの指定¶
cakerunner --cakephp-core-path=DIRECTORY ...
CakePHP ライブラリフォルダのパス (/path/to/cake) を指定します。デフォルトでは app フォルダの親ディレクトリにある cake ディレクトリ (/path/to/app/../cake) が使用されます。
テスティングフレームワーク毎の利用可能な機能¶
| PHPUnit, CIUnit | SimpleTest, CakePHP | PHPT | PHPSpec | |
|---|---|---|---|---|
| 指定されたディレクトリに含まれるテストの実行 | Yes | Yes | Yes | Yes |
| 指定されたファイルに含まれるテストの実行 | Yes | Yes | Yes | Yes |
| 指定されたファイルの指定されたテストのみの実行 | Yes | Yes | ||
| 指定されたクラスのテストのみの実行 | Yes | Yes | ||
| テスト結果の色付け | Yes | Yes | Yes | Yes |
| 指定された PHP スクリプトのテスト実行前のプリロード | Yes | Yes | Yes | Yes |
| 指定されたディレクトリの変更の監視および変更検出時のテストの実行 | Yes | Yes | Yes | Yes |
| テスト結果の通知 | Yes | Yes | Yes | Yes |
| JUnit XML フォーマットによる、指定されたファイルへのテスト結果のロギング | Yes | Yes | Yes | |
| 詳細な進捗リポートの出力 | Yes | Yes | ||
| 最初の失敗またはエラーの際の停止 | Yes | Yes | Yes | |
| テストファイルのパターンの指定 | Yes | Yes | Yes | |
| テストファイルのサフィックスの指定 | Yes | Yes | Yes |