EclipsePDT+PHPUnit+XDebug+MakeGoodでphpのTDD

※2010/10/17追記
会社で今所属しているチームではJavaを用いたシステム開発で、JUnitを用いたTDD:テスト駆動開発が導入されています。
TDDを導入することで、その処理で「何をしたいか」がはっきりし、また、デグレを防げるというメリットがあります。

さて、JavaではJUnitを用いたユニットテストが主流(?)のようですが、phpでも同じようなUIでTDDやりたいなぁと思って調べてみたら、MakeGoodという、EclipsePDTにユニットテスト機能を付与するEclipseプラグインがありました。
「これはいい」と思ってさっそく導入しようとしたのですが、躓きまくりで、導入について解説サイトも少なかったので大変でした。
そこでブログに覚書きとして導入方法を書いておきますので、今後導入する方がいた時の参考になればと思います。
(だいぶ知識不足ですので、間違い等ありましたら指摘をお願いいたします)

  • 使用環境
    • OS:Windiows7 64bit
    • XAMPP:ver 1.7.1
    • XAMPPによってインストールされたバージョン
    • PHPUnit:3.4.15
    • EclipsePDT:2.2.0 All In Ones
    • MakeGood:0.7.0


  1. PHPUnit3のインストール
    コマンドラインからpearコマンドを使ってインストールします。
    ただし、XAMPPのver.1.7.3はpearコマンドが上手く動かずPHPUnit3をインストールできなかったので、今回はXAMPP 1.7.1を使いました。
    (最新版のXAMPPでも、pearをアップグレードしてPHPUnit用のチャンネルをきちんと追加するとインストールできます)
    PHPUnitやPHPUnit2がインストールされている場合はアンインストールしてからPHPUnit3をインストールしたほうがいいかもしれません。

  2. XDebugのインストール
    XAMPPでphpをいれた場合、あらかじめXDebugは導入されているので、新たにダウンロードしてインストールする必要はありません。
    ただし、色々なサイトでも解説されていますが、php.ini中の[Zend]の中を全てコメントアウトし、[XDebug]の中のコメントを外す必要があります。

  3. EclipsePDTのインストール
    ここからダウンロードして下さい。

  4. MakeGoodのインストール
    基本的にはMakeGoodのwikiユーザーズガイドに沿って行ないます。
    1. Eclipseを起動して、「Help」->「Install New Software」で、「Location : http://eclipse.piece-framework.com/」からMakeGoodを探し、チェックをいれてインストール
    2. PHP実行ファイルの構成
      1. 「Window」->「Preferences」の「PHP」->「PHP Executables」を選択
      2. 「Add」を押して実行ファイルを構成
        • 「name」は適当
        • 「Exeutable path」はC:\xampp\php\php.exe
        • PHP ini file」はC:\xampp\php\php.ini(もしかするとこの設定いらないかも)
        • 「SAPI Type」はCLI
        • PHP debugger」はXDebug
    3. Debugの設定
      「Window」->「Preferences」の「PHP」->「Debug」を選択
      • PHP Debugger」はXDdebug
      • 「Server」は適当
      • PHP Executable」は先程設定したPHP実行ファイルの構成を選択

  5. テストケースの作成
    PHPUnitでテストしたいクラスのテストケースを作成します

      1. コマンドラインを起動
      2. テストしたいクラスが書いてあるソースファイルがある場所まで移動
      3. phpunit --skeleton-test クラス名」と打って実行
        成功すると以下のようなメッセージが出て、クラス名Test.phpというテストケースの雛形が書かれたファイルが作成されます

    この時、phpunitの設定ファイル内のphpへのパスがおかしいため、phpディレクトリ内以外では動作してくれませんので、設定ファイルを書き換えてください。



  6. inculde_pathの設定
    PHP実行ファイルの構成でiniファイルを指定するのですが、なぜかこのphp.iniのinclude_pathはきちんと認識しない*1ので、わざわざ指定してやる必要があります。

    1. 「Navigator」からテストしたいファイルを含むプロジェクトを右クリック
    2. PHP Include Path」を選択し、「システムインクルードパスの追加」をクリック
      この処理をしないと、「Fatal error: require_once(): Failed opening required 'PHPUnit/Runner/Version.php'」と怒られます



  7. MakeGoodの起動
    ここまできたら、あとはもうテストを書いて実行するだけです。

      1. 前の手順で作成したテストケースをEclipsePDTに読み込ませる(Eclipseで編集していたファイルのテストケースを作った場合は、同じ場所にテストケースのファイルが作られるはずなのでリフレッシュするだけ)
      2. 実施したいテストの処理を書く
      3. Navigatorからテストケースファイルを右クリックして「テストの実行」をクリックするなどしてテストを実行
        全てのテストが通ればバーはグリーンに、テストが失敗すればバーはレッドになります。

     



詳細なテストケースの作り方などは、「PHPUnitによるテストの自動化」の連載*2を読むのがいいかと思います。



ちなみに、MakeGood wikiにはデバッガは「Zend Debugger」でもよいとあったのですが、なぜか僕の環境では動いてくれませんでした…



だいぶ駆け足で説明してきましたが、説明不足の部分もあるかと思いますので、疑問点や指摘点等があればコメントお願いいたしますm(_ _)m