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 のスクリプトです。

tests/prepare.php:

<?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