■
(以下、単に「テスト」といった場合、ユニット・テストのことを指す。そう断っておかないとNaHiさんに叱られる。)
CppUnitってありますけど
あんなもん、ほんとにみんな使ってるの?
CPPUNIT_ASSERT(condition) CPPUNIT_FAIL(message) CPPUNIT_ASSERT_EQUAL(expected, actual)
なにこれ?
こんなんでテスト中毒なんかになれるわけないでしょ?
assertメソッドっていうのはテストの主役で
一番使われるメソッドでしょ?
それなのになんでこんなクソ長ったらしい名前
タイプしなきゃいけないの?
しかも全部大文字だし。
キャプスロック使えって? バカ?
こういうのを見ると、ほんとにXPというか
test firstは形だけしか理解されてないんだなと思う。
テストは頻繁にやるわけ。
そのためにはテストは簡単に書けないといけないわけ。
でもって、テストには邪道はないわけ。
テストに王道があるとすれば、テストを頻繁にやる
ということだけなの。
だったら、そういうふうに作らないとダメじゃん。
それがhumane interfaceと呼ばれるのか
easy-to-use APIと呼ばれるのか何なのかしらないけど。
もとからC++にリフレクションがないんだったら、
AwkでもPerlでも何でも使って楽にテストできるように
しなきゃダメじゃん。
C++で全部解決したいんなら、C++のパーザ書くとか
そういう方向に行かなきゃダメじゃん。
みんなが大好きな静的な型情報はそのためにあるんじゃないの?
なんでユーザに苦痛を与えるCPPUNIT_ASSERTなんて
安易な方向に流れるの?
自分としてはAspectC++が使えないか考えてるんですけど。
- -
まぁ、それは置いといて。
あのさ、JUnitがさ、junit.framework.Assertだけ
切り出してる理由、わかってる?
それはさ、「JUnitが状況に合わないんだったら
自分でテスティング・フレームワーク書きなさい。
でも、Assertは使えるでしょ?」ってことなわけ。
ユニット・テストだったらxUnit使うのは当たり前だけど、
それは「テストを頻繁にやる」ということの前には
必須じゃないわけ。
xUnit使うと頻繁にテストができないんだったら、
xUnitは捨てて、自分でフレームワークを
書かなきゃいけないわけ。
テストの王道は「頻繁にやる」ということにしか
ないんだから。
- -
話が飛ぶけど、テスティング・フレームワークなんて
言語ごとに違って当たり前じゃん。
何もバカみたいにJUnitのマネする必要なんてないじゃん。
っていうか、多分、それは間違ってる。