がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

SimpleTest便利ざます〜

いわゆる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」ってやつです。


厳密には、例外投げたときとかもいろいろやりたいんだけど(あるかもしれないんだけど調べてない)。
とりあえず近々に使う程度にゃ上述のメモで十分かと。おいら的には。


いぢょ。相変わらずのメモ書き〜