るびま12号の qwikWeb の記事からテストについて思う
全然ペースについていけない。
Rubyist Magazine - Rubyist Magazine 0012 号
今回はなんたってこれ。
qwikWeb の仕組み 【第 1 回】 コンテンツ・フレームワークとしての qwikWeb
- わびさび方式は PHP で実現するのは難しそうだなぁ。
- ジェームズ・クラーク式記法は、DocBook かなんかで生成した HTML もそういう形になってるんだけど、Namazu と相性悪いんだよね。
- モジュールのファイルをそのまま実行するとテストになるのはよい。
モジュールがテストとして実行できるのは Perl モジュールでもそんなことできるやつがあるなーと思い出した。全部の .pm がそうなっているのかどうかは知らないけど。
最近、自分では元のディレクトリ構成を _test/ ディレクトリの中に再構成してテストを書くって方法を試しているんだけど、これは
- あとでディレクトリ構成を変更するのが大変
- システム全体のルートに当たるディレクトリを特定しないといけない
などの制約ができる反面、
- リリースの際は _test/ を取り除けば動作に必要なものだけになる
- _test/ の中に simpletest/ も用意して、Pear でインストールした simpletest でも同梱している simpletest/ でもテストできる
といった具合に、「テストとコードを一緒に持ち運べるけど分離もできる」という、ちょっとした自由を確保できていると思っている。このちょっとした自由を意識しているのは、
- PHP にはテスティングフレームワークが付属していない
- Pear ライブラリは pear コマンドを利用してインストールしたものでも、直接コピーしたものを require するのでも同じように使える
- テストコードがそのまま動作環境でも生きているのは容量食うし、ちょっといや
- 動作コードとテストコードは分離していた方が phpdoc でドキュメントを生成するときに見やすそう
などの理由による。
まだ改良の余地はたくさんあると思うけど、今のところソコソコ気に入っている。
※ simpletest の部分はちょっと前は PHPUnit だったんだけど、PHPUnit より simpletest の方が出力結果が派手で楽しかったので変更した。PHP4 でも 5 でも動くっていうのも、将来的には役に立つかも、という期待も少しある。(PHPUnit は PHP4 用で、PHP5 では PHPUnit2 になっちゃう。)