情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

CakePHPで PHPUnitの導入

CakePHPPHPUnitをインストールするまでに色々と苦労をしたので手順等を記載します。

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';

こちらで一応はテストコマンドが動くようになります。(エラーがまだありますが)

以下の記事を参考にしました。

phpunitのインストールで躓く - Qiita

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

(なぜかCやC++コンパイラが必要なようです、、)

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に記載して再度テストコマンドを実行します。 番号を選んでテストを実行出来れば完了です。