IntelliJ IDEA から cakephp の test を実行する方法(PhpStorm でも多分大丈夫) #jbugj #cakephp

IntelliJ IDEA で、まだ cakephp の対応が行なわれておらず、test が普通に実行できないという嘆きをつぶやいていたのですが、昨日調べたところ、設定すれば実行可能であるという情報を入手したので早速やってみました。

元の記事はこちらです。

http://blog.jetbrains.com/webide/2013/02/running-cakephp2-unit-tests-in-phpstorm/

このままやってみたのですが、うまく動かなかったので、その内容も入れてまとめます。

基本設定

cake のコンソールででテストが実行できていることが前提です。

  1. このファイル( https://gist.github.com/unok/5095891 ) を cakephp の lib や app のあるフォルダにコピー
  2. [Run]-[Editing Configurations...] の Defaults にある PHPUnit を開く
  3. 以下の設定を行う
場所 項目
Test Runner Test scope Directory
Test Runner Directory [cakeunit4phpstorm.php 置いたフォルダ]
Test Runner Test Runner options --cake-app --stderr
Command Line Interpreter options -f [cakephpunit4phpstorm.php のフルパス]

これで、testTestMethod 単位での実行が可能になっていると思います。多分。カバレッジもちゃんととれるようです。 --stderr の部分は、環境によって違うと思いますが、セッション回り使う時は無いと NG だと思います。

ケース指定

  1. [Run]-[Editing Configurations...] で + を押して PHPUnit を追加
  2. 適当に名前をつける
  3. 以下の設定をする
場所 項目
Test Runner Test scope Directory
Test Runner Directory [cakeunit4phpstorm.php 置いたフォルダ]
Test Runner Test Runner options --cake-app --stderr --cake-case=casename
Command Line Interpreter options -f [cakephpunit4phpstorm.php のフルパス]

これで、指定したケースを実行することができるようになっているかと思います。

変更した点

動かすために以下の修正をしました。

  • cakeunit4phpstorm.php を編集
    • chdir で実行場所に移動するように変更
    • IDE_PHPUnit_TextUI_ResultPrinter と IDE_PHPUnit_Framework_TestListener のコンストラクタの引数が違うようなので修正
  • session 系のテストが失敗するので実行時の設定に --stderr を追加

これで、ターミナルの役目が一つ減りました。 IDEA や PhpStorm で正式に cakephp に対応して欲しいので、YouTrack の cakephp framework 対応のタスクに vote おねがいします。 http://youtrack.jetbrains.com/issues?q=cakephp