phpでTAP

phpでTAPやらperlのTest::Moreを移植しよう、というのは調べてみると、色々な人がやっているのだけど、subtestあたりに対応しているのはないっぽかったり個人的にあまり気にいったやつがなかったので書いた

         $t = new TestTAP();
         $t->ok(1==0, "failed test");
         $t->is(1, 0, "1 should be 0");
         $t->subtest("categorize test", function($t) {
             $t->ok(0==1, "It's subtest");
         });
         $t->done_testing();  # you should call at last.

subtestするためには、php 5.3以降でないといけないのが欠点かもしれない。

perlのTest::Moreはisとかokとかをグローバルに生やしているために複雑になってしまっているところはあるが、こんな感じでテスト用のインスタンスをつくってそれを元に実行する、という形式にすると、(書く側のおまじないは増えるが、)わりとsubtestの実装もすっきり書けるようだ。

新しい言語を覚えるときの題材として、TAPの実装はそこそこ簡単でよいかもしれない。