(以下、単に「テスト」といった場合、ユニット・テストのことを指す。そう断っておかないと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のマネする必要なんてないじゃん。


っていうか、多分、それは間違ってる。