逆引きrhaco(?)18:doctestを使う

※追記があるのでrhacoアプリ開発日誌も参考にして下さい。

doctestは「Pythonのdoctest便利ー!」と聞かされてカッとなって作った(パクった)テストツールです(違ってたら修正よろしく〜)。

便利な点は
1.コードとテストが同じファイル内にある
2.ユニットテストにテストが書いてある場合、どのユニットテストを見れば良いか分かる
3.テスト書いてないかどうかも分かる
4.trunkではドキュメントと同時にテストも表示されて例文代わりになって便利!
5.trunkではテストをファイル単位、フォルダ単位で自由に選べる

この4点だと思います。
早速簡単なのを書いてみます。
適当にプロジェクトを作ってlibrary/Hoge.phpを作ったとして

<?php
class Hoge {
  var $fuga;
  /**
  * class hoge
  * これはjavadocやphpdocsです
  * @author shigepon
  */ 
  function Hoge($fuga){
  /***
  * $h = new Hoge('rhaco');
  * eq('rhaco',$h->fuga);
  * neq('conveyor',$h->fuga);
  * neq('shigepon',$h->fuga,'テスト結果の欄にコメントを付けれますよ');
  * assert(isset($o->fuga));
  * //これはdoctestなので、コメントは//とか付けます
  */
    $this->fuga = $fuga;
  }

  function foo(){
  /*** #pass */
  //テストを「飛ばしたよ」と明示する場合
  }

  function bar(){
  //doctestを書かないとNONEと結果に表示されます。
  }

}
?>

という感じで書きます。doctestを行う手順は

1.setup.phpにアクセスする
2.上部の「test」リンクをクリックする。
これだけです。

さらに、
3.上部に実行するファイル、フォルダを選択できるコンボボックスがあるので、選択
4.executeボタンをクリック
で、指定したファイル、フォルダのテストが可能です。

使えるメソッドは
eq(予想する値,実際の値,表示するコメント)→予想値と等しければtrue
neq(予想する値,実際の値,表示するコメント)→予想値と等しくなければtrue
assert(実際の値,表示するコメント) →値がtrueならばtrue
の3種です。

rhacoでは気軽にテストを書けるので「転ばぬ先の杖」的に書いておけば幸せになれるかもしれません。

ちなみにRhaco自身のテスト内容はsetup.phpのrhacodocリンク、またテスト結果はRhacoフォルダ/_testapp/setup.phpのtestリンクから見ることが出来ますが、
非常にたくさん/*** #pass */が書いてあります。

/*** #pass */を埋めようと思う人は是非、lingrのrhaco-jaページなどで「テスト書くよ!」と言って下さい。