2.0のリリースから3ヶ月が経ち、2.0での開発を検討することが多くなってきているかと思います。私もやっと昨年末辺りから各プラグインの移行等々2.0での開発を始めているところです。今回は、NetBeans上で効率よくテストするための設定方法をご紹介します。この設定を行うことで、NetBeans上からテストの作成、実行、実装とテストの切替えが容易に行えるようになります。本設定のみでは、CakePHPのFixtureを用いたテストを行うことができません。Fixtureを利用できるようにする方法についてはこちらで紹介しているのであわせてお読みください。本設定方法では、CakePHPのFixtureを用いたテストを行うことができません。Fixtureを利用できるようにする方法を検討中です。インストールこれがないと始まりませんね。参考にインストールしましょう。NetBeansからPHPUnitを利用できるように、NetBeansの環境設定でPHPUnitのパスを設定しておきます。するのが早いかと思います。/path_to/cake_projectCakeとPHPUnitの準備ができたらNetBeansでプロジェクトを作成します。NetBeansでプロジェクト作成プロジェクトペインで右クリックか、「ファイル」→「新規プロジェクト」で既存のソースからプロジェクトを生成します。PHPUnit用bootstrapファイルの作成CakePHPの機能を利用してテストを行う際は、各種設定やライブラリを事前に読み込む必要があります。その事前準備を行っているので、これを少し書き換えてPHPUnitのブートストラップファイルとして利用します。等のファイル名で保存します。開き、最後の行にあるPHPCakeTestSuiteDispatcher::run();1CakeTestSuiteDispatcher::run();をコメントアウトまたは削除し、PHPApp::load('CakeTestSuiteCommand');1App::load('CakeTestSuiteCommand');を書き加えます。※このブートストラップファイルの位置を変更する場合は、上部に記載されている各種パスも変更してください。プロジェクトのPHPUnit設定プロジェクトのプロパティを開き、先ほど作成したブートストラップファイルのパスを指定します。テストフォルダも指定しておきます。ソースディレクトリを変更NetBeans内でテストを実行するために、ソースディレクトリを変更します。src.dir=.1src.dir=.とか書かれている部分をsrc.dir=app1src.dir=appと変更します。vendorsがソースディレクトリとして認識されなくなるので、インクルードパスとして含めておきます。変更したら、NetBeansを再起動します。(プロジェクトを開き直すだけでもOK。以上で、準備は完了です。テストを書いてみましょう。テストコードを作成する(準備)例によってFizzBuzz問題を実装してみましょう。ツールから「PHPUnitテストを作成」します。こんなコードがPHPUnitによって自動生成されます。(PHPUnitのテンプレートがデフォルトの場合NetBeansからテストを実行してみます。何も書いてないので、成功したことになりますね。cakeからも実行してみます。CakePHPのtest.phpで実行するにはCakeTestCaseを継承する必要があるので、テストコードをCakeTestCaseを継承したものに書き換えます。CakePHP側でもテストを実行できるようになりました。Buzz」、それ以外の場合は与えられた数値を返すメソッドとします。1の場合は1が返るのでこんな感じのテストコードを書きます。FizzBuzz::fizzbuzz(1));}まだ何も実装していないのでテストは失敗します。$n;}テストを実行してみましょう。ちなみにテストの実行にはショートカットキーがありますので、それで実行するようにするとスムーズにコーディングとテストの実行が出来ます。テストが通りましたね。これはまだ不完全なテストなので仕様に沿ってテストを追加していきます。FizzBuzz::fizzbuzz(3));}実行します。1の場合は成功しましたが、3の場合は失敗しましたね。失敗した場合は右側のペインの方に、どのテストが失敗したのかの情報が出てきます。これを参考にして、テストが通るように実装し、またテストを実行します。このように、テスト→実装を繰り返して仕様を満たすコードを作り上げていきます。今回ご紹介した手法を用いてNetBeans上でテストの実行をできるようにすることで、いちいちブラウザに切り替えてテストを実行せずともショートカットキーひとつでテストの実行ができるようになります。これにより、TDDをよりリズミカルに実践することができます。ブラウザ側もコードカバレッジやSQLのログがみれたりと、便利な機能があるので併せて利用するとより効率的ですね。