いわゆるUNIT test系のプログラムなのですが。最近 SimpleTest がいたくお気に入り。
理由は「インストールがシンプルだから」。
とりあえず
http://simpletest.sourceforge.net/
からダウンロード。tar ballがゲトれるはずなので、解凍して適当なディレクトリにほぉりこんで終わり。
ああなんてシンプルw
使い方のサンプルは
http://blog.zuzara.com/2007/03/01/194/
とか
http://project-p.jp/halt/kinowiki/php/SimpleTest
とか
http://project-p.jp/halt/kinowiki/:WD_29/SimpleTest/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E4%B8%80%E8%A6%A7%E3%81%A8%E4%BD%BF%E3%81%84%E6%96%B9
とか
http://www.geocities.jp/toyprog/simpletest/first_test_tutorial.html
とか参照。
うるとら大雑把に書くと
<?php require_once(simpletestが入ってるディレクトリ . 'unit_tester.php'); require_once(simpletestが入ってるディレクトリ . 'reporter.php'); require_once(テストしたいクラス); class てけとうなクラス名 extends UnitTestCase { public function __construct() { $this->UnitTestCase(); } public function 適当なメソッド名() { // テストしたい内容をご自由に } } // end of class $test = new てけとうなクラス名; $test->run(new HtmlReporter());
こげな感じ。
内部のメソッドは複数あってもOK。勝手に探し出してくれるらしい。
でも順番とか考えると、あんまりこねくり回さずに1メソッド集約のほうが楽な気もする。
この辺まだちゃんとホゲれてないので、よいアイデアあったら突っ込みよろです。
んで。肝心のテスト方法ってか記法。
とりあえず極めてよく使ってるのが
assertEqual($result, $ans);
$result == $ansがtrueならOKしてくれる………ってまて。2a問題考えると微妙怖いぞ?
実験。結果。………予想通り orz
近いのを探す。光の速さで発見。
assertIdentical($result, $ans);
===なので、2a問題も平気…なはづ。
実験。結果。………予想通りよっしゃ!!
っつわけでとりあえず気を取り直して。
…っても、あと使うのは…
assertNull($value);
が、ようは「値がnullならok」してくれる。これの逆が
assertNotNull($value);
くらい?
なんでか、assertTrue はあまり使いませぬ。assertEqual………もとい、assertIdenticalで片付いてしまうので。
後は、ファクトリ系とかで使うのが
assertIsA ($obj, $type);
ようは「$objが$typeクラスに属してる(当人または子クラス) ならtrue」ってやつです。
厳密には、例外投げたときとかもいろいろやりたいんだけど(あるかもしれないんだけど調べてない)。
とりあえず近々に使う程度にゃ上述のメモで十分かと。おいら的には。
いぢょ。相変わらずのメモ書き〜