PHPUnitをEclipseから実行できるプラグイン「MakeGood」
【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.2(PHPUnitが含まれている)
PHP 5.4.19
既に、Composerがインストールされ、Xdebug(このブログを見よ)が設定されている状態である事。
参照サイト→悠雀堂ブログ:
PHPの開発環境を構築する(その4): PHPUnit+MakeGoodを使う
■MakeGoodのインストール方法
1)Eclipseを起動し、上部メニューから「ヘルプ>新規ソフトウェアのインストール」を選択
2)「作業対象」に「http://eclipse.piece-framework.com/」を入力し、その右の「追加」をクリック
3)「名前」は空白のままで構いませんので、「OK」をクリック
4)「MakeGood」を選択し、下方の「次へ」をクリック
5)ライセンスを確認し、「使用条件の条項に同意します」をチェックして、「完了」をクリック
6)証明書を信頼するかどうかのダイアログが開きます。「すべて選択」をクリックしてチェックを入れてから、「OK」をクリック
7)再起動のダイアログが表示されるので、「OK」をクリック
8)再起動したら、メニューより「ウィンドウ>ビューの表示>その他」を選択
9)MakeGoodを選択して「OK」をクリック
10)MakeGoodビューが追加される
■プリロードスクリプトの作成
プロジェクトディレクトリ直下に「preload.php」という名前で作成する
<?php
require_once 'C:\pleiades\xampp\php\vendor\autoload.php';
(自分の環境に合わせる)
?>
また、testフォルダーを作って置く
■MakeGoodの設定
PHPエクスプローラーにてプロジェクトが選択された状態で、メニューより「プロジェクト>プロパティー」を選択します。するとプロパティーダイアログが開きます。
左側メニューより「MakeGood」を選択します。
「テストフォルダー」の右の「追加」をクリック
テストドライバのフォルダを選択し、「OK」をクリックします。
さらに「プリロードスクリプト」に、先ほど作成したpreload.phpを設定します。
以上でMakeGoodの設定は完了です。プロパティーのダイアログも「OK」をクリックして閉じます。
■phpunit-skelgenの組み込み
メニューより「実行>外部ツール>外部ツールの構成」をクリックします
「プログラム」が選択された状態で、左上の新規構成ボタンをクリックします。すると「プログラム」の下に「新規構成」が作成されます
右側のペインにて名前を「phpunit skelgen」のように入力します。また「メイン」タブにて以下の設定をします
•ロケーション : C:\pleiades\xampp\php\vendor\bin\phpunit-skelgen.bat
•作業ディレクトリ : ${project_loc}
•引数 : generate-test ${string_prompt:namespace\class} ${selected_resource_loc}
これらは、テスト対象のクラスからテストドライバを生成するための設定です。(引数のgenerate-testの替りにgenerate-classを指定すると、逆にテストドライバからソースのスケルトンが生成できるようです。)
続いて「リフレッシュ」タブをクリックします。
完了時にリソースをリフレッシュ」にチェックをして、「選択されたリソースを含むフォルダー」を選択します。
続いて「共通」タブをクリックします
お気に入りのメニューに表示」の「外部ツール」にチェックを入れ、「適用」をクリックします。
以上でphpunit-skelgenの組み込みが終了しました、「閉じる」をクリックしてダイアログを閉じます。
■テスト
テストドライバがないのでphpunit-skelgenでスケルトンを作成します。尚phpunit-skelgenが対応しているのはクラスのみなので、関数がテスト対象の場合は手動で作成します。
テストドライバのスケルトンの作成
PHPエクスプローラーより、テスト対象のクラスの入ったphpファイルをクリックして選択します。そしてメニューより「実行>外部ツール>1 phpunit-skegen(1)」を選択
クラス名を訪ねるダイアログが表示されますので、テスト対象のクラス名を入力し、「OK」をクリック
すると選択したファイルと同じフォルダに「(クラス名)Test.php」というファイルができます。これがテストドライバのスケルトンになります。
このファイルを右クリックし、「リファクタリング>移動」を選択してテストドライバ格納フォルダ以下に移動します。
■テストの結果
PHPエクスプローラーよりテストドライバをダブルクリックしてコードを表示してやると、テスト対象のクラスのNewがエラーになっています。そこでクラス宣言より上(namespaceよりは下)に、require_onceをかいてテスト対象を読み込んであげます。
require_once '(テスト対象へのパス)';
保存すると、問題ビューにエラーが表示されます。
何事かと思いますが、保存したときにMakeGoodが自動的にテストを実行して、未実装のテストケースのmarkTestIncompleteメソッドをエラーとして表示したようです。(問題ビューだと「エラー」扱いですが、MakeGoodビューでは、テストの失敗ではなく、エラー扱いです。)
とりあえず一つのケースだけ実装して、保存します。するとテストが自動的に走ります。
MakeGoodビューを見ると、成功が1になっています。
またビューを拡大して「テスト結果」を見ると、成功したケースの左にはチェックが付いています。失敗が×、エラーが!になりますので、コーディングフェイズでは×がないことを目標にします。また×と!はコードビューにも表示されます。
以上、
操作について今ひとつわからない
■デバック
Xdebugの操作と同じです