CakePHPで PHPUnitの導入
CakePHPでPHPUnitをインストールするまでに色々と苦労をしたので手順等を記載します。
1.とりあえず実行して何が足りないのか調べる
まずはルートディレクトリで
lib/Cake/Console/cake test app
を実行します。すると
include(PHPUnit/Autoload.php): failed to open stream : No such file or directory in [CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 150]
といったエラーが出ました..
PHPUnitが用意されていないというような意味だと思い調べてみますと PHPUnitとcomposerが準備できていないことが原因なのでは? という記事が出てきました。 なのでcomposerのインストールをします。composerとはPHPのパッケージ管理システムのことです。
# curl -sS https://getcomposer.org/installer | php # mv composer.phar /usr/local/bin/composer
続いてPHPUnitをセットアップしていきます。アプリケーションのルートディレクトリに移動します。
$ sudo vi composer.json composer.jsonに以下を記載します。 ---------------------------------- { "require-dev": { "phpunit/phpunit": "3.7.*" } } ---------------------------------- $ sudo composer update
vendorディレクトリ内にautoload.phpが作られているはずなのでそのパスをbootstrap.phpに記述します。 以下の一文を追記します。
require '/hoge/huga/vendor/autoload.php';
こちらで一応はテストコマンドが動くようになります。(エラーがまだありますが)
以下の記事を参考にしました。
2.Xdebugのインストール
先ほどのテストコマンドを実行すると
lib/Cake/Console/cake test app
以下のようになると思います。
Welcome to CakePHP v2.4.5 Console --------------------------------------------------------------- App : app Path: /home/vagrant/dev/hoge/app/ --------------------------------------------------------------- CakePHP Test Shell --------------------------------------------------------------- App Test Cases: [1] All ~ ~ ~ What test case would you like to run? [q] >
適当な番号を選ぶとXdebugがインストールされていないというエラーが出ます。 Xdebugをインストールしていきます。 XdebugとはPHPのデバッグ用の拡張モジュールのことです。
以下のコマンドでXdebugをインストールします。
pecl install xdebug-2.2.7
が、[checking for gcc... no]というエラーが出ている場合は 別途必要なものがあるのでインストールします。
# yum install gcc
Xdebugのインストールが出来たと思うので 次に設定ファイルを作成します。
# vi /etc/php.d/xdebug.ini xdebug.iniに以下を記載します。 ---------------------------------- zend_extension=/usr/lib64/php/modules/xdebug.so ----------------------------------
apacheを再起動します
# /etc/init.d/httpd restart
以下のサイトを参考にしました。
PHP5.3系にxdebugをインストールする際のあれこれ | Skyarch Broadcasting
xdebug インストール時の error: no acceptable C compiler について - Qiita
3.テスト用のDBを用意する
ここまで来て問題なくテスト出来る人もいるかと思うのですが、テストコマンドで番号を選んで
Error: Database connection "Mysql" is missing, or could not be created.
というエラーが出た場合テスト用のデータベースを作成する必要があります。
phpMyAdminを開きまして既に利用しているDBがある場合はそれをコピーしてもよいのではないでしょうか DB名をクリックして「操作」タブを選びます
「データベースのコピー先:」というものがあるので名前を入力して「実行」を押します。 データ量が多いと少し待ちます。
出来上がったDB名をdatabase.phpに記載して再度テストコマンドを実行します。 番号を選んでテストを実行出来れば完了です。