- 20 名前:12 mailto:sage [2009/06/29(月) 00:35:55 ]
- 要するにテストの階層化が簡単にできるって話。
assert_equalに該当するようなcheckっていう関数(マクロ)を作って deftestっていう関数定義のようなものをテスト用に作って deftestで、例えば足し算のテストをする。test_plusっていうのを定義して、 その中でcheck(1+1==2)みたくテストを書く。 で実行すると「test_plusから呼ばれたcheckの1+1==2っていう式は真/偽だったよ」 って教えてくれるわけ。 さらにdeftestでtest_arithmeticを定義してその中でtest_plusを呼ぶと 「test_arithmeticから呼ばれたtest_plusから呼ばれたcheckの1+1==2っていう式は真/偽だったよ」 と教えてくれる。さらにdeftestでtest_mathを定義してその中でtest_arithmeticを呼ぶと…… みたいに階層化することができる。さらにそれぞれの関数ですべてのテストが真だったか/ひとつ以上偽だったか の結果を返すので、 「test_arithmeticから呼ばれたtest_plusから呼ばれたcheckの1+1==2っていう式は真だったよ」 「test_arithmeticから呼ばれたtest_plusから呼ばれたcheckの1+9==10っていう式は真だったよ」 「test_arithmeticから呼ばれたtest_timesから呼ばれたcheckの1*1==1っていう式は真だったよ」 すべてのテストは成功しました。 みたいに関数名とか階層とか評価した式とかをいちいち別に書かなくても表示してくれる。 それでこれと似たようなことをrubyで書けるかなっと少し考えてみたんだけどさっぱり思いつかない。
|

|