PHPUnit を使ってユニットテスト

今まで仕事でユニットテストというものを使った事がなかった(自動テストとか自動化というような文化があまりない・・・)。
仕事で PHP から離れたけど、家で PHP 使って遊んでいる。
せっかくだからユニットテストというものに触れて、ユニットテストを使ってみたい。


Zend FrameworkPHPUnit が使われている。
それにあやかり、PHPUnit を使ってみる。
ググったら、PHPUnit3で始めるユニットテスト:特集|gihyo.jp … 技術評論社 が出てきた。
入門としてちょうどよさそう。


とりあえずサンプル通りに ArrayTest.php をコピペして、動かしてみる。

PHPUnit 3.2.13 by Sebastian Bergmann.

..

Time: 0 seconds


OK (2 tests)

ちゃんと動いた。


次は ArrayTest ではなく、Zend Framework命名規約でクラス名を定義してやってみた。
My_ArrayTest.php として実行。

PHPUnit 3.2.13 by Sebastian Bergmann.

File "My/ArrayTest.php" could not be found or is not readable.

エラーになった。。。orz
どうやらアンダースコアはディレクトリと認識されるようだ。


ググってみたけど、解決策が見つからなかった。
ふとZend Framework 自体のテストの書き方はどうやってるんだろうと思って、
tests ディレクトリ以下を見てみると、AllTests.php というのがあった。

ここまで2つのテストケースを作成し,それぞれテストを実行してきましたが,テストケースが増えてくると個別に実行していては時間がいくらあっても足りません。PHPUnitにはスイート(Suite)と呼ばれる,テストをまとめて実行する仕組みが用意されています。

http://gihyo.jp/dev/feature/01/php-test/0005?page=3

なるほどテストケースをスイートとして登録して、ラップしてやればいいのか。
というわけで、AllTests.php をコピペして addTestSuite('My_ArrayTest'); として実行してみた。

PHPUnit 3.2.13 by Sebastian Bergmann.

..

Time: 0 seconds


OK (2 tests)

おぉ。動いた!
これ動かし方分かるのに 3 日位かかった・・・orz