MakeGood ユーザーガイド¶
このユーザーガイドでは MakeGood 0.7.0 から MakeGood 1.2.0 について説明します。
English | 日本語
インストール¶
必要なソフトウェアのインストール¶
MakeGood を実行するためには、以下のソフトウェアが必要となります。
- PHP 2.5.0 以降
- Zend Debugger または Xdebug
- Eclipse Helios (3.6) または Eclipse Galileo (3.5)
- PDT 2.2 または 2.1
- (オプション) Stagehand_TestRunner 2.15.0 以降
- (オプション) PHPUnit 3.4.1 以降
- (オプション) SimpleTest 1.0.1 以降
- (オプション) CakePHP 1.3 または 1.2
以下のサイトを参考にこれらのソフトウェアのインストールを行ってください。
- PDT/Installation
- Xdebug: Documentation
- Eclipse PHP Development Tools - Zend.com
- Stagehand_TestRunner - テスト駆動開発のためのテストランナー - Piece Framework
- 第 3 章 PHPUnit のインストール
- テストの準備 :: テスト(Testing) :: CakePHPによる作業の定石 :: マニュアル :: 1.3コレクション :: The Cookbook
ノート: PHP 5.3 用の Zend Debugger は Zend Server Community Edition に含まれています。
ノート: 既知の問題 ネストしたディレクトリをインクルードパスに追加できない にも目を通しておいてください。
MakeGood のインストール¶
最初に Eclipse を起動し、メニューバーから Help -> Install New Software... を選択します。次に Add... ボタンをクリックし、以下の更新サイトを登録します。
| Name | 任意の文字列または空 |
| Location | http://eclipse.piece-framework.com/ |
次に MakeGood のフィーチャーを選択し, Next > ボタンをクリックします。
次に Finish ボタンをクリックします。これでインストールが開始されます。インストールの途中で証明書に関するダイアログが表示されますので, Select All ボタンをクリックし、次に OK ボタンをクリックします。

インストールが終了すると Eclipse の再起動を奨めるダイアログが表示されるので, Yes ボタンをクリックします。これで Eclipse が再起動され、インストールが完了します。
PHP 実行ファイルの構成¶
MakeGood は PDT に定義済みの PHP 実行ファイルを使用するため、少なくとも 1 つの PHP 実行ファイルを構成する必要があります。
最初にメニューバーから Window -> Preferences... を選択し、続いて PHP -> PHP Executables を選択します。次に Add... ボタンをクリックし、PHP 実行ファイルを構成します。

次に Finish ボタンをクリックし、サイドメニューから PHP -> Debug をクリックします。次に Default Settings を以下のように構成します。
| PHP Debugger | Zend Debugger または XDebug |
| Server | (任意) |
| PHP Executable | (使用したい PHP 実行ファイル) |

テストの実行¶
ノート: テストファイルに関する規約 にも目を通しておいてください。
ファイル保存時のすべてのテストの実行¶
ノート: この機能を有効にするには、プロジェクトのプロパティでテストフォルダーを指定する必要があります。詳細については テストフォルダーの指定 をご覧ください。
ワークスペースでファイルの変更・追加・削除が行われた時に、自動的にすべてのテストを実行します。ワークスペースの外側で変更が行われた場合、ワークスペースの同期が行われた時にテストを実行します。
この機能を有効にするには、MakeGood ビューの ファイル保存時のすべてのテストの実行 ボタンをボタンが押し込まれるようにクリックします。
ノート: この機能がデフォルトで有効になるかどうかは、構成パラメーター "ファイル保存時のすべてのテストの実行" 機能のデフォルト値の構成 の値によって決定されます。
すべてのテストの実行¶
ノート: この機能を有効にするには、プロジェクトのプロパティでテストフォルダーを指定する必要があります。詳細については テストフォルダーの指定 をご覧ください。
指定されたテストフォルダーに含まれるすべてのテストを実行します。
PHP Explorer および Package Explorer からのすべてのテストの実行¶
PHP Explorer/Package Explorer から任意のリソースを選択し、すべてのテストを実行します。
すべてのテストを実行するには、任意のリソースを選択し、コンテキストメニューから すべてのテストの実行 を選択します。
PHP Editor からのすべてのテストの実行¶
アクティブなエディターからすべてのテストを実行します。
すべてのテストを実行するには、エディター内で右クリックを行い、コンテキストメニューから すべてのテストの実行 を選択します。
PHP Explorer および Package Explorer からのテストの実行¶
PHP Explorer/Package Explorer から任意のリソースを選択し、テストを実行します。
テストを実行するには、リソースを選択し、コンテキストメニューから テストの実行 を選択します。
オリジナルサイズを見るには ここ をクリックしてください。
テストの実行が完了すると MakeGood ビューにテストの結果が表示されます。
オリジナルサイズを見るには ここ をクリックしてください。
以下のリソースが利用可能です。
- フォルダー
- ファイル
- クラス (PHP Explorer のみ)
- メソッド (PHP Explorer のみ)
フォルダーが指定された場合、サブフォルダーは再帰的にスキャンされます。
ノート: プロジェクトで初めてテストを実行する時、プリロードスクリプトを選択するダイアログが表示されます。プリロードスクリプトは、インクルードパス, オートローディング、エラーハンドリングなど、テスト実行の準備を行うスクリプトです。スクリプトは、テストランナー本体がロードされる前に評価されます。プリロードスクリプトを使わない場合は空のままで OK ボタンをクリックしてください。詳細については プリロードスクリプトの使用 をご覧ください。
PHP Editor からのテストの実行¶
ノート: 以下の機能を動作させるためには、ユーザー・ライブラリーなどによって、編集中のファイルの依存関係が Eclipse 上で解決されている必要があります。とりわけテストクラスの継承階層 (例えばプロジェクトが PHPUnit を使用する場合は PHPUnit_Framework_TestCase までの階層) の解決は必須です。
アクティブなエディターからテストを実行します。
テストを実行するには、エディター内で右クリックを行い、コンテキストメニューから テストの実行 または このファイルに関連するテストの実行 を選択します。
オリジナルサイズを見るには ここ をクリックしてください。
テストの実行 には編集中のファイルがテストコードの場合に有効となる 3 種類のサブメニュー, コンテキスト, クラス, ファイル があり、これらは異なる振る舞いを持ちます。
このファイルに関連するテストの実行 は、そのファイルに含まれるクラスとそのすべてのサブクラスに関連するテストを実行します。このコマンドは、編集中のファイルがプロダクションコードの場合も実行することができます。
これらの振る舞いをまとめると以下のようになります。
テストコードを編集中の場合
| コマンド | 実行されるテスト |
|---|---|
| テストの実行 - コンテキスト | カーソル位置の最小の要素 (メソッド、クラス、ファイル) に含まれるテスト |
| テストの実行 - クラス | カーソル位置のクラスに含まれるテスト |
| テストの実行 - ファイル | ファイルに含まれるテスト |
| このファイルに関連するテストの実行 | クラスとそのサブクラスに含まれるテスト |
プロダクションコードを編集中の場合
| メニュー | 実行されるテスト |
|---|---|
| テストの実行 - コンテキスト | n/a |
| テストの実行 - クラス | n/a |
| テストの実行 - ファイル | n/a |
| このファイルに関連するテストの実行 | クラスとそのサブクラスに関連するテスト |
テストのデバッグ¶
MakeGood には 実行モード および デバッグモード の 2 種類の動作モードがあります。現在の動作モードが 実行モード の場合、テストは単に実行されます。 デバッグモード の場合、テストはデバッガ内で実行されます。
テストをデバッグするには、MakeGood ビューの テストのデバッグ ボタンをボタンが押し込まれるようにクリックします。 テストのデバッグ ボタンが押し込まれている間、テストはデバッガ内で実行されます。
オリジナルサイズを見るには ここ をクリックしてください。
前回のテストの再実行¶
前回実行したテストを再度実行します。
ノート: ファイル保存時のすべてのテストの実行 によって実行されたテストは対象外です。
前回のテストを再実行するには、MakeGood ビューの テストの再実行 ボタンをクリックします。
テストの実行の停止¶
進行中のテストの実行を停止します。
テストの実行を停止するには、MakeGood ビューの テストの停止 ボタンをクリックします。
最初の失敗またはエラーの際の停止¶
最初の失敗またはエラーが発生した時にテストの実行を停止します。
この機能を有効にするには、MakeGood ビューの 失敗/エラーの際の停止 ボタンをボタンが押し込まれるようにクリックします。
構成¶
"ファイル保存時のすべてのテストの実行" 機能のデフォルト値の構成¶
このパラメーターは ファイル保存時のすべてのテストの実行 機能がデフォルトで有効となるかどうかを決定するために使われます。このパラメーターはデフォルトで 有効 になっています。
このパラメーターを有効・無効にするには、以下のようにワークスペースのプリファレンスを構成します。
- プリファレンスを開きます。
- MakeGood を選択します。
- チェックボックス ファイル保存時にすべてのテストを実行する をクリックします。
システムインクルードパスの使用¶
PDT の PHP 実行環境では、PHP ini file で定義されたインクルードパス (システムインクルードパス) は破棄され、代わりにプロジェクトのインクルードパスが有効となります。
MakeGood では、PHP ini file で定義されたインクルードパスを明示的に使用することができます。構成手順は以下の通りです。
- プロジェクトのプロパティを開きます。
- PHP Include Path を選択します。
- システムインクルードパスの追加 ボタンをクリックします。
ノート: システムインクルードパスを使用している場合、PHP エクスプローラ上の PHP Include Path に プロジェクト名/.project が表示されます。
プリロードスクリプトの使用¶
インクルードパス, オートローディング、エラーハンドリングなど、テスト実行の準備を行うスクリプトを指定することができます。スクリプトは、テストランナー本体がロードされる前に評価されます。
実際の例を見てみましょう。以下は、MakeGood のバックエンドとして利用されている Piece Framework のプロダクト、Stagehand_TestRunner のプリロードスクリプトです。
<?php
if (defined('E_DEPRECATED')) {
error_reporting(E_ALL & ~E_DEPRECATED);
} else {
error_reporting(E_ALL);
}
set_include_path(realpath(dirname(__FILE__) . '/../examples') . PATH_SEPARATOR .
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();
プリロードスクリプトを使うには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- プリロードスクリプト を指定します。
プリロードスクリプトを使わない場合はテキストボックスの値を空にします。
テスティングフレームワークの選択¶
MakeGood は PHPUnit, SimpleTest, CakePHP (MakeGood >= 1.1.0) をサポートしており、あなたはプロジェクトで使うフレームワークを選択することができます。デフォルトは PHPUnit です。
テスティングフレームワークを選択するには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- テスティングフレームワーク を指定します。
テストフォルダーの指定¶
すべてのテストの実行 によってテストするフォルダーを指定します。
テストフォルダーを指定するには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- 追加 または 削除 ボタンを使って テストフォルダー を編集します。
キーバインディング¶
キーボードからコマンドを実行するために、MakeGood のコマンドに対してショートカットキーを割り当てることができます。
最初にメニューバーから Window -> Preferences... を選択し、続いて General -> Keys を選択します。次に type filter text と表示されているテキストボックス で makegood と入力します。次にキーバインディングを構成します。

デフォルトのキーバインディング¶
MakeGood コマンドに対するデフォルトのキーバインディングは以下のようになります。
| Command | Binding | When |
|---|---|---|
| すべてのテストの実行 | Alt+M A | In Windows |
| テストの再実行 | Alt+M R | In Windows |
| テストの停止 | Atl+M S | In Windows |
| ファイル保存時のすべてのテストの実行 | Alt+M U | In Windows |
| テストのデバッグ | Alt+M B | In Windows |
| 失敗/エラーの際の停止 | Alt+M E | In Windows |
| 次の失敗/エラー | J | In MakeGood View |
| 前の失敗/エラー | K | In MakeGood View |
| 失敗/エラーのみ表示 | F | In MakeGood View |
| コンテキストに対するテストの実行 | Alt+M C | Editing PHP source |
| クラスに対するテストの実行 | Alt+M L | Editing PHP source |
| ファイルに対するテストの実行 | Alt+M F | Editing PHP source |
| このファイルに関連するテストの実行 | Alt+M D | Editing PHP source |
| テストの実行 | Alt+M X | In Windows |
| Show View (View: MakeGood) | Views |
テスティングフレームワーク固有の構成¶
PHPUnit¶
(MakeGood >= 1.1.0)
XML 設定ファイルによる PHPUnit 実行環境の構成¶
XML 設定ファイルによって PHPUnit 実行環境を構成することができます。
XML 設定ファイルを指定するには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- XML設定ファイル を指定します。
XML 設定ファイルフォーマットの詳細については PHPUnit Manual - 付録C XML 設定ファイル をご覧ください。
ノート: <testsuites> 要素と <selenium> 要素はサポートされません。
ノート: 既知の問題 PHPUnit XML ファイル内の相対パスが動作しない にも目を通しておいてください。
CakePHP¶
(MakeGood >= 1.1.0)
app フォルダのパスの指定¶
デフォルトでは app フォルダのパスとしてプロジェクトルートフォルダー以下の app フォルダーが使用されます。
app フォルダのパスを指定するには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- appフォルダ を指定します。
CakePHP ライブラリフォルダのパスの指定¶
デフォルトでは CakePHP ライブラリフォルダのパスとして app フォルダの親ディレクトリにある cake フォルダー (/path/to/app/../cake) が使用されます。
CakePHP ライブラリフォルダのパスを指定するには、以下のようにプロジェクトのプロパティを構成します。
- プロジェクトのプロパティを開きます。
- MakeGood を選択します。
- CakePHPライブラリフォルダ を指定します。
ノート¶
テストファイルに関する規約¶
テストファイルは以下の規約に準拠する必要があります。
| PHPUnit | SimpleTest | CakePHP | |
|---|---|---|---|
| ファイル名 | FooBarTest.php または FooBarTestCase.php | foo_bar.test.php | |
| クラス名 | FooBarTest または FooBarTestCase | ||
| スーパークラス | PHPUnit_Framework_TestCase | UnitTestCase または WebTestCase (MakeGood >= 1.1.0) | CakeTestCase または CakeWebTestCase |
Console ビューとフォーカス¶
データが標準出力および標準エラー出力に書き込まれる時に Console ビューがフォーカスを得るかどうかは Run/Debug -> Console 設定ページの以下の 2 つの構成パラメータによって決まります。
- Show When Program Writes to Standard Out
- Show When Program Writes to Standard Error
MakeGood によるテスト実行中は上記のパラメータは無効になり、致命的なエラーが出ない限り Console ビューにフォーカスが移動することはありません。
既知の問題¶
追加の INI ファイルがロードされない。¶
Eclipse PDT チームは バグ #324073 を修正するために -n オプションの導入を決定しました。これにより /tmp/zend_debug/... の php.ini のみがロードされ、すべての追加の INI ファイルはロードされなくなります。
この変更は PDT 2.2.0 M201010110334 (2010/10/11) から導入されています。
詳細については Issue #242 をご覧ください。
PHPUnit XML ファイル内の相対パスが動作しない。¶
(MakeGood == 1.1.0)
Issue #240 をご覧ください。
Xdebug を使ったテストの実行時に Debug Output ビューに何も出力されない。¶
これは PDT の既知の振る舞いです。この問題は現在の動作モードが 実行モード の際に発生します。
Xdebug を使ったテストの実行時に Console ビューの出力が不完全になる。¶
これは PDT の不具合です。詳細については以下のページをご覧ください。
Bug 282997 - Run As -> PHP Script: incomplete output
以下のように、デバッガと動作モードにより 標準出力 および 標準エラー出力 のリダイレクト先が異なります。
動作モードが実行モードの場合:
| デバッガ | Console | Debug Output |
|---|---|---|
| Zend Debugger | 標準エラー出力、デバッグ情報 | 標準出力 |
| Zend Debugger (デバッグ情報なし) | 標準出力、標準エラー出力 | - |
| Xdebug | 標準出力、標準エラー出力 | - |
動作モードがデバッグモードの場合:
| デバッガ | Console | Debug Output |
|---|---|---|
| Zend Debugger | 標準エラー出力、デバッグ情報 | 標準出力 |
| Zend Debugger (デバッグ情報なし) | 標準エラー出力、デバッグ情報 | 標準出力 |
| Xdebug | 標準出力、標準エラー出力 | 標準出力 |
この不具合は 標準出力 が Console ビューにリダイレクトされる場合に発生します。
MakeGood は Xdebug についてのみこれを修正します。Zend Debugger については修正されません。しかし、デバッグ情報を使う構成になっている場合 標準出力 は Console ではなく Debug Output ビューにリダイレクトされるため問題になりません。
ネストしたディレクトリをインクルードパスに追加できない。¶
現在のところ、PDT ではネストしたディレクトリをインクルードパスに追加することができません。
あなたの環境の PEAR ディレクトリ (php_dir) が /usr/share/php の場合、Stagehand_TestRunner は /usr/share/php/src ディレクトリに配置されています。そして Stagehand_TestRunner の依存パッケージは /usr/share/php ディレクトリに配置されています。
以下は、この問題を解決する方法です。
- システムインクルードパス を有効にし、PHP ini file で include_path を構成する。
- プリロードスクリプト で include_path を構成する。
- (非推奨) php_dir/src にあるディレクトリを php_dir に移動する。
ノート: この問題は Eclipse プロジェクトに報告済みです。Bug 296896 - Allow to use the nested directories as libraries.













