UnitTestについての機能を少し強化したのでその紹介です。
PHPUnitはインストール済みと仮定して話を進めます。
Step0 : PHP FuelPHP Frameworkプラグインのインストール
すでにインストール済の方はプラグインのアップデートをして下さい。この機能は現在beta版としてbitbucketにて配布中ですが、問題なさそうであればプラグインポータルに公開します。
NetBeansの他のプラグインもそうですが、アップデートするときにアンインストールする必要はありません。DLしたファイルのバージョンが新しければそのままアップデートできます。
Step1 : PHPUnitの設定
ツール > オプション > PHP > 単体テスト
からPHPUnitスクリプトの設定をします。
Step2 : テスト・フォルダの設定
NetBeansからFuelPHPの新規プロジェクトを作成した場合は自動で設定されています。
新規プロジェクトの作成についてはScreencastを参照して下さい。
[youtube]http://youtu.be/lS0z4WYlONk[/youtube]
プロジェクトプロパティ > ソース > テスト・フォルダ にapp/tests設定します。
Step3 : PHPUnit Test Init アクションの実行
プロジェクトを右クリック > FuelPHP > PHPUnit Test Init を実行します。これを実行すると、いくつかファイルを作成し以下の設定を自動で行います。
- bootstrapファイルの作成と設定
- カスタムスクリプトファイルの作成と設定
- テストファイル名にTestのSuffixを付けないで実行するためのファイルの作成
尚、一度ファイルを作成すると、再びアクションを実行しても上書きすることはないので、作り直したい場合は対象のファイルを削除して下さい。
追記:2013.3.5
対象ファイルとは次の3つです。7.3では上書きするように変更したと思います。
- nbproject/phpunit.sh or phpunit.bat
- nbproject/NetBeansSuite.php
- core/bootstrap_makegood.php
Step4 : テストファイルの作成の設定
FuelPHPのドキュメントによると、テストクラスはprefixにTest_をつけるようになっています。ただこれだと、ソースからテストを実行するときにNetBeansからでは実行できません。中の処理としては、Class_Nameのテストファイルを探すときに、Class_NameTestクラスのファイルがないか調べています。
テストクラスのクラス名のPrefixとSuffixを設定できるようにしているのでそこで調整して下さい。
プロジェクトプロパティ > フレームワーク > FuelPHP から設定できます。
Step5 : テストファイルの作成
さて、ようやくここからテストファイルの作成なのですが、NetBeansの標準のPHPUnitの作成の機能では、ソースディレクトリとテストディレクトリの構造を合わせないと意図したところに配置できないので、テストファイル作成用のアクションをつけています。
fuel/app/classes/以下のファイルで右クリック(もしくはエディタのコンテキストメニューから) > Create Test for FuelPHP
を実行するとtests以下に必要であればディレクトリを作成してテストファイルが作られます。
ファイルの中身は以下のとおりです。
- @groupアノテーション
- TestCaseを継承
- 全てのメソッドの空のテストメソッド
スケルトンジェネレータを使って生成しているわけではなく、直接書いているので、ソース側にアノテーションを書いていても有効にはならないことに注意して下さい。
Step6 : テストの実行
デフォルトの設定だと、テストファイルの実行と全体のテストはそのまま実行できます。ただソースファイルから実行しようとすると、テストが見つからないと言われるので、その場合は、Step4の設定で
- Prefix : (空)
- Suffix : Test
としてテストファイルを作成するとソースからもテストケースが実行できるようになると思います。
最後に、実装途中で@aWebprogrammerさんにテストしてもらい、いろいろと意見をいただきました。ありがとうございました。