ユニットテスト0のレガシープロジェクトにPHPUnitを導入する

NO IMAGE

PHPUnitの導入記事ってたくさんあるけどどうも自分で消化できない部分が多いのでまとめておきます
今回はphpunit.xmlの書き方がなんとなく理解できたのでそれを書いておきたかっただけですけど\(^o^)/

PHPUnitのインストール

pearComposerでインストールしてください

※PHPのバージョンが5.2系の場合はこちらの方法で入れて下さい

テストコードの作成

テストコードを置くディレクトリの作成

どこでもいいので作成します
~~~
$ mkdir tests
~~~

phpunit.xmlを作成

あとで使います
~~~
$ vim tests/phpunit.xml



./

~~~
参考:http://www.phpunit.de/manual/3.3/ja/appendixes.configuration.html

ひな形の作成

テストを作りたいファイルのディレクトリに移動し、コマンドを叩きます

~~~
$ phpunit-skelgen –test ClassName

PHPUnit Skeleton Generator 1.1.0 by Sebastian Bergmann.

Wrote skeleton for “ClassNameTest” to “/path/to/ClassNameTest.php”.
~~~

※Wrote skeleton for hogehoge と出ない場合は書き方が間違っているのでphpのエラーログを見るといいです

テストの実行

とりあえずマニュアルに書いてあるとおりにその場で実行してみます

~~~
$ phpunit –verbose ClassNameTest

PHPUnit 3.6.10 by Sebastian Bergmann.

~~~

何も表示されません、これはClassNameTest.phpの中身を見るとわかりますが
コンストラクターでClassNameオブジェクトを作っているのに、ファイルを呼び出していない為に起きています
※エラーログを見ると出ています

なので、まずはClassNameTest.phpを修正、もしくはautoloadを使ってクラスを呼び出して上げる必要が有ります

※ファイル名がPath_To_Class.phpなどになってる場合↑のコマンドだと
Cannot open file “Path/To/ClassTest.php”.
というエラーになり、実行できません。その場所へファイルを置くもしくは

~~~
$ phpunit –verbose Path_To_Class Path_To_Class.php
~~~
とすれば、実行されます

*Test.phpをtestsディレクトリに移動する

~~~
$ mv ClassNameTest.php /path/to/tests/
~~~

パターン1 requireを追記する

~~~
パターン2 autoloadしているファイルを呼び出す

フレームワークなんかの場合bootstrap.phpがそれに当たると思います
コマンドラインのオプションを付けて実行してあげれば最初に読み込まれます
~~~
$ phpunit –bootstrap /path/to/framework/bootstrap.php
~~~

この場合もパターン1と同じ結果が出ると思います
こちらのパターンを使う場合はphpunit.xmlに1行追加しておくと毎回引数を書かなくていいので楽です

~~~

./

~~~

ひとまず

これで、testsディレクトリ内でphpunitを実行すればそこにあるテストが全て実行されるという準備ができました
あとはコツコツと書いていくしか・・・(‘A`)

DBを使ったテストとか考えると先が長いです