テスト駆動の意味を理解する

すべて OK じゃなければならないと、誰が決めたんでしょう?
NG が正しいこともあるのに。という疑問も出てきましたが、スルーしていきます。

テスト駆動を自分なりにやってみたのですが、何かがおかしいのです。
テストコードを眺めていると…。そう、テストコードではなく実装(テスト対象)コード、そのものだったのです。
メソッド呼ぶときに assertEqual しているだけなので、これを外してしまえば、実装コードなのです。
ここでテスト駆動に疑問が沸きます。自然と出来ないのに、なぜテスト駆動がよいのか?
私の理解力がないだけかもしれませんが、ちょっと調べただけでは実践出来ません。

ここで思考がストップしました。どうしたら、良いのかまったく思いつきません。頭がぼーとして集中出来なくなりました。ブドウ糖を補給しても、だめでした。

しかたがないので、原点に立ち返ることにしました。 Unit って何? 何を Test するの?
まず、Unit という言葉の意味。これは 構成単位とか 部隊 とか 独立して存在する事です。ちなみに辞書には単体という単語は見られませんでした。(誰が単体と訳したんだろう?)

じゃぁ、Unit って Class か? いえ、複数の Class が ひとつの Unit になる場合があるので、Class Test ではありません。派生とか継承とか、何かしら他の Class にお世話になってたりしますから。

ここで、ふっと気がつきます。少なくても メソッドのテストでは無い!ってことです。
ロジックを考えて、その Test をするのでは無く、Unit を考えて、その Test Case を作るのです。
その Unit を作る前に Test しよう! なのです。

やっとすっきりしました! と思ったけど、新たな問題が発生。
はて? Unit はどうやってつくるの?

つづく