はじめまして、アライドアーキテクツの伊藤です。
アライドでは主にPHPで開発しています。IDEはEclipseであったりNetBeansであったりVimであったり各メンバーが各々好きなものを使っているのですが、私はかなり少数派(たぶん自分だけ)のEclipseを使っています。
さて、EclipseでPHP開発をする為に便利なプラグインを色々入れているのですが、その中でもEclipse上からPHPのユニットテストを実行する事ができるナイスなプラグイン「MakeGood」を紹介したいと思います。
参考までに私の開発環境は次の通りです。
Mac OS X 10.7.2
PHP 5.3.6
Eclipse PDT 2.2.1
xdebug 2.1.2
PHPUnit 3.5.15
MakeGood 1.7.0 ※現時点で1.9.0がリリースされているようです。
MakeGoodのインストール
ここではMakeGoodのインストール方法を説明します。(※PDT、PHPUnitなどは予めインストールされている前提で話を進めてしまいます。ごめんなさい)
1. Eclipseのメニュー「Help」から「Install New Software」を選択する。
2. ダイアログが表示されるので、「Work with:」に「http://eclipse.piece-framework.com/」と入力。関連するプラグインにチェックを入れて「Next>」をクリックする。
3. ライセンスに同意して「Finish」をクリックする。
4. 下図のダイアログが表示されるので、チェックを入れて「OK」をクリックする。
5. Eclipse再起動を促されるので「Restart Now」をクリックしてEclipseを再起動する。
ここまででインストールは完了です。
MakeGoodの設定
1. Eclipseのメニュー「Eclipse」から「環境設定」を選択する。
2. PHP Executablesを設定する。
3. Debugを設定する。
4. PHPプロジェクトを右クリックして、MakeGoodの設定をする。
これで設定は完了です。
テストの実行
さて実際にテストを実行してみましょう。次のようなテストケースがあったとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php class CampaignTest extends PHPUnit_Framework_TestCase { protected $target; private $birth_date = '1977-10-25'; public function setUp() { $this->target = new campaign(); } /** @test */ public function 年齢制限チェック_参加下限より年齢が大きい場合はTrue() { $this->target->limit_age_min = 10; $this->target->limit_age_max = ''; $this->assertTrue($this->target->isValidAge($this->birth_date)); } /** @test */ public function 年齢制限チェック_参加下限より年齢が小さい場合はfalse() { $this->target->limit_age_min = 35; $this->target->limit_age_max = ''; $this->assertFalse($this->target->isValidAge($this->birth_date)); } /** @test */ public function 年齢制限チェック_参加下限と年齢が同じ場合はTrue() { $this->target->limit_age_min = 34; $this->target->limit_age_max = '12'; $this->assertTrue($this->target->isValidAge($this->birth_date)); } } |
エディタ内で右クリック→「テストの実行」→「クラス」を選択するとクラス全体のテストが実行されます。「コンテキスト」を選択すると、functionの上にカーソルがある場合はそのfunctionのみ、クラス名の上にカーソルがある場合はクラス全体のテストが実行されます。自分はコンテキスト実行をCommand + Shift + X + Tのショートカットを割り当ててすぐ実行できるようにしています。
さて、いざ実行してみると…
おお!結果が表示されましたね。テストが実行されない場合は、include Pathにphpunitが設定されているかも確認してみてください。
ちなみにテストが失敗した場合は次のような表示になります。
EclipseでJUnitを実行した時とほとんど変わらないUIですね。これでEclipse上でのユニットテストが格段に使いやすくなると思います。みなさんも是非導入してユニットテスト生活を充実させましょう!
アライドアーキテクツでは、一緒に働く仲間を随時募集しています。是非一度採用サイトを覗いてみてください。お待ちしております。
元Javaプログラマ。現在はScala/PlayでWeb開発と、SwiftでiOSアプリ開発をしています。 Unitテストとか書いてる時が一番楽しかったりします。