Cactusについて
今月からassignされたお仕事でStrutsを使う事になりました。といっても、改造案件なので作り込まれた既存ソースを見ながらコピペのお手伝いみたいな感じです。
但し自分、実はStrutsって一度もマジで使った事無いんですよね・・・。というわけで、本棚で埃をかぶっていた
- 「Jakartaプロジェクト徹底攻略」(技術評論社)
- 「Jakartaプロジェクト徹底攻略2 本格活用編」(技術評論社)
をぱらぱらめくっていたら、なんか「Cactus(カクタス)」というテスティングフレームワークが目に付きました。
前述の本自体は古くて平成14年とか16年とかが第一版。ドッグイヤーの昨今、一昔前の話で添付CD-ROMにもJDK1.4.0とかEclipse2.1とかが入っている有様。
なんですが、Cactus自体は現在も開発続行中のようです。
http://jakarta.apache.org/cactus/index.html
興味深いのはServlet/JSP/Filterを自前のコンテナ上で動作させてテストを実行できるという点でした。
TDDの雑誌やWeb記事でよく見かけるのはビジネスロジックやvalidation相当の部分です。一方Rails系のテストの場合は一気通貫で動いてしまいます。中々こう、HTTPリクエストやレスポンスなど入出力レイヤーからコントローラ部分までを抜き出してテストするのってお目にかかった事が無いなー、という感じで。
まだまだ勉強不足です。
ようやく全テストを動かせた・・・。
Factoryが内部で保持するキャッシュを回避する方法を思いついた。 - ぐらめぬ・ぜぷつぇんのはてダの形での修正をようやく採り入れ、全テストケースを実行する事が出来ました。
いや、まぁ、ぼろぼろ出てきましたよ。多かったのが「テストクラス名の重複」。コピペで作って、そのファイル一個だけの実行を繰り返していた為、全テストファイルロードして動かす事が無かったので気が付かなかったです。
C:\in_vitro\SVNWORK\yb-php\tests>testrunner-st -p prepare.php -R Loading [ dirty_TestCase.php ] ... Succeeded. => Added [ dirty_testcase ] Loading [ funcs_TestCase.php ] ... Succeeded. => Added [ funcs_testcase ] (省略) Loading [ Update_TestCase.php ] ... Succeeded. => Added [ yb_tx_user_update_testcase ] testsuite ... wait 1 minutes for checking 'updated_at' field updating. Please wait for 1 seconds... Output of Test Runner: OK Test cases run: 42/42, Passes: 3941, Failures: 0, Exceptions: 0 Results: Runs : 3941 Passes : 3941 (100%) Failures : 0 (0%), 0 failures, 0 errors
全3941のアサーション、PHP4/5でパス。
但しまだ一つ罠が残っていた。テストを動かすとキャッシュがものすごい勢いで書き換わる為、全テストを動かした後Web画面を叩くと、テストを動かした時のキャッシュが表示されておかしくなる箇所が。うーん、こればっかりは全テスト動作前後でのキャッシュファイルのクリアを徹底するしかないか・・・。