Eclipse から MakeGood で FuelPHP のユニットテストを自動実行する
Eclipse でコーディングしている場合、ソースファイルやテストファイルが更新されたときに自動でユニットテストを実行してくれる MakeGood という Eclipse のプラグインがあります。
今回は、FuelPHP で MakeGood を使う方法です。
Eclipse や MakeGood のインストール方法については、Eclipse 3.7 & PDT 3.0 & MakeGood 1.8 のインストール を参照願います。
MakeGood の設定
Eclipse の設定
Window メニューから Preferecnes を選択します。
PHP → PHP Libraies を設定します。ライブラリのパスを設定します。
ここではライブラリの名前を「xampp」として「/opt/lampp/lib/php」を設定しています。
プロジェクトの設定
プロジェクトを右クリックし、Properties を選択します。
MakeGood の設定をします。
「テスティングフレームワーク」に「PHPUnit」を選択し、「プリロードスクリプト」は 「fuel/core/bootstrap_makegood.php」に設定します。「テストフォルダー」は通常は「fuel/app/tests」になります。
bootstrap_makegood.php は、bootstrap_phpunit.php をコピーしてあらかじめ作成しておきます。
--- bootstrap_phpunit.php 2011-12-15 13:10:30.448042129 +0900 +++ bootstrap_makegood.php 2012-01-12 15:05:11.175774258 +0900 @@ -9,6 +9,12 @@ error_reporting(E_ALL); ini_set('display_errors', 1); +// for MakeGood +$_SERVER['doc_root'] = '../../'; +$_SERVER['app_path'] = 'fuel/app'; +$_SERVER['core_path'] = 'fuel/core'; +$_SERVER['package_path'] = 'fuel/packages'; + $app_path = trim($_SERVER['app_path'], '/').'/'; $package_path = trim($_SERVER['package_path'], '/').'/'; $core_path = trim($_SERVER['core_path'], '/').'/';
左下の MakeGood のアイコンをダブルクリックすると、
MakeGood のウインドウが開きます。
エラーがある場合は、ここに表示されます。
テストの手動実行
MakeGood はファイルの更新を検知して、自動的にテストを実行しますが、手動でテストを実行することもできます。
- テストの実行
- すべてのテストの実行
メニューが表示されます。
「すべてのテストの実行」を選択すれば、すべてのテストが実行されます。
なお、ここでのすべてのテストとは、テストフォルダー内のファイル名が Test.php で終わるファイルです。
FuelPHP の命名規則からは外れますが、テストファイル名は MakeGood の仕様により Test.php で終わる必要があります。
テストファイルは autoload とも関係ないので、私は単純にファイル名のみを hoge_Test.php のようにしています。
例えば、Tests_Auth クラスの場合は、auth_Test.php としています。
関連
- Eclipse 3.7 & PDT 3.0 & MakeGood 1.8 のインストール - A Day in Serenity @ kenjis
- Eclipse/PDT から PHPUnit/CIUnit のテストを自動実行する - A Day in Serenity @ kenjis
- http://redmine.piece-framework.com/projects/makegood/wiki/Eclipse_PDT_%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%B6%99%E7%B6%9A%E7%9A%84%E3%83%86%E3%82%B9%E3%83%88%E3%83%A9%E3%83%B3%E3%83%8A%E3%83%BC
- FuelPHP での PHPUnit によるユニットテスト - A Day in Serenity @ kenjis