FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

phpunitに触れてみた

はじめまして。むらいです。

さて、さっそくですが合宿で行ったphpunitのテスト実行までについて書きたいと思います。

そもそもJenkinsでの自動化を目的とし、テスト実行をphpunitで行うために今回使用しようと思った次第です。


まずは前提としてcakephp2系がインストールされている状態です。1系じゃなくて2系です!

phpunitpearコマンドでインストールしました。

pear upgrade PEAR

pear config-set auto_discover 1

pear install pear.phpunit.de/PHPunit

インストールされているかを確認するには、

phpunit

です。それだけです。最初確認方法がなかなか書いておらずこれで時間をムダにしました。

次に、

cakephpでテストを実行する場合は、デバッグレベルを2にしてください。

(デフォルトは0だと思いますが、それだとテストが実行できません)

database.phpと同じ階層にある、core.phpに書かれています。

テスト実行をする前に基本的なコマンドを叩いてみました。

./Console/cake test core Basics

OKが帰ってきました。

これはcakephp本体のテストですのでDBなどの設定不要でphpunitがインストールされていれば実行可能です。

DBを設定しました。

database.phpの$defaultをコピーして、$testに変更です。

どうやらphpunitのテスト実行のときは$testのDBをみにいくようです。

この設定をしていないとエラーでます。

で、テスト用のデータベースを作成します。

最初は、手動でDBを作成したのですがその後のテストがなかなかうまくいかず、

(ほぼこれで時間がかかりました。)

cakephpのbakeコマンドで作成することにしました。

bakeをここで初めて触れましたが、簡単に説明すると

bake」とは、CakePHPのMVCによるWebアプリケーションの基本部分を自動生成するためのPHPスクリプトです。

対話式(YES、NOで進めるあれ)なので初心者での何をやろうとしているのかわかりやすいです。

./Console/cake bake all Category

./Console/cake bake all Topic

./Console/cake bake all Comment

chmod 777 ./tmp/cache/persistent/*

これで必要なMVCが作成されてます。

最後のchmodは権限変更ですが、これをしないとテスト実行できないようです。

さて、テストの実行を行います。

ブラウザからの方法とコンソールからの方法があります。

ブラウザからの場合、

cakephpをインストールした際に、test.phpってのがあると思います。

そこにアクセスすればいいのですが、今回使用しようとした私の環境にtest.phpがありませんでした。。。

なぜ???

なにかのタイミングで削除されたのか。。。

ブラウザの方がわかりやすそうだったので、

cakeをもう一度インストールしようかとも思いましたが、時間がかかるため、コンソールでも出来るのでやっぱりそっちにしました。

./Console/cake test app Model/Topic

結果でOKと出ました。成功です。

これで一応テスト実行完了です。

ちなみにこれはModelのテストでした。

実際のテスト実行はコードをごりごり書いていくことになります。

なので、これですべての準備が整ったと言ったところだと思います。

かなりさらっと書きましたが、結構時間がかかりました。特にDBあたりで。。

環境を整えるのも手間でした。というか、そこまで差異はなかったのですが、

すんごい遠回りをしてしまったように思います。

知らないことをやるとそういうものかなと感じますね。

感想としては、合宿という限られた時間内で、勉強というのがまた新鮮でした。

そして、phpunitのテストの便利さよりもcakephpって結構色々やれること多いんだなという気付きがあったのが収穫でした。

そもそも私のcakephpに関する知識が少なすぎただけかもしれませんが。。。

合宿で行えたのはここまでです。

追々、その後のテストに関してまとまったら記載していこうと思います。