おおむらです
JUnit(*1)は、Unit Testと込みで語られているわけですが、
JUnit自体はクラス単位のテストにしか使えないというような限界がある
わけではなくて、そのフレームワークはUnit Testとは異なった、それ
独自の有効範囲があるように思います。
*1) xUnit全体について語りたいのですが、JとCppしか知らないので、
とりあえずJだけ
JUnitというのは Fixtureを中心としたフレームワークです。
もともとは、TestCaseがそれぞれ独立した環境の中で実行され、
1つのテストが失敗しても他のテストに影響しないようにするのが目的だった
と思うのですが、そこに、別々のテストで同じデータを使うことが頻繁に
あるから、fixtureという概念を導入したという感じでしょうか。
今はもっぱら、Unit Testのために使っているから、fixtureとしてテスト
対象のクラスのインスタンスしか作りませんが、構造的にそうしなくては
ならないわけではありません。
そのとき、JUnitはどういう使い方ができるのか? そのいろんな可能性を
考えるのも楽しいかなと思ってます。
で、Unit Testの枠組みの中で使うとしても、fixtureを再利用するために
TestCaseを階層化するというのは、有効だし、JUnitの枠組みの
中では自然なやり方なのではないかと思うようになりました。
以前、私が "[XP-jp:00815] fixture のかきかた"で示したように
Fixutreを階層的に構成するために、TestCaseを使うわけです。
そこでは、そのやり方の問題として
>・ テストケースが、fixutreの集合みたいなクラスを継承するのはへんかも。
> でも、setUp()を継承したいから、こう書くしかないのよね。
などということを書いていましたが、今考えて見ると、これは全然へんでは
なくて、JUnitのフレームワークとしては自然な方法であるように思います。
Fixtureの定義部分とテストケースの定義部分を切り離せるようにするために
JUnitのクラス構成をかえるのも有効かもしれませんね。
つづきはこの秋のメールで♪