Friday 15 June 2007

JUnit



今週末は、琉大で勉強会があるそうです。

前回のJavaでDartsゲームを作るXP祭で、実は使ってました。感想としては「別に、テスト用のルーチンを持つクラスを別に作るのでいいじゃん」だった。

で、JUnit 読むというので、「それは、つまらないんじゃないか...」と思っていたんですが、最新の JUnit 4.3.1 を見ると...

 annotation でテスト用のmethodを識別する
 source は Java 1.5 の Generic バリバリで書き直してある

で、7,000行もあるということが判明... いや、まぁ、7,000行ぐらいだと3,4時間で読んだりしますが... (問題は、普通の人が来る勉強会で、そんなことして良いかどうかだ...)

というわけで、昨日は(あわてて)みんなで予習してました。

Eclipse で JUnit のソースを動かすのに1時間ぐらいかかってました。あはは。現場でやるよりは、ましか。

annotation は reflection で取って来るわけね。わりと、素直なプログラミングで、あまり、オブジェクト指向っぽくはないようです。テスト毎にテスト用のオブジェクトを作るみたいなことをすれば、それっぽくなるかも。

でも、Unix なプログラマだったら、find + grep でテストメソッドリストを作って、それから、テストクラスを生成するって、やると思う。Java に閉じてやるのが何が嬉しいかって言うと、非Unix なプログラマがうれしいぐらいって感じ?

Generic バリバリに関しても、あんまり良い印象はなかったです。つまり、

 もっと、ちゃんとオブジェクトを細かく作っていれば、そんな
 Wild Card Generic をたくさん使う必要はないんだよ

ってことだね。型の階層構造を抽象化出来てないので、cast(型変換) のsyntax sugarでしかない Generic を多用する羽目になるという感じ。特に Wild Card は見栄えが悪くなるだけ。まぁ、Generic/Java 1.5 の勉強がてら作ったという感じだな。

Java の配列は型がなかったので、もともとcastして使っていたんだけど、Generic で、そのcastをconsistentに出来るってのは、うれしいんだけどね。

まぁ、もう少し読んでいくと、面白いところがあるかも知れない... でも、JUnit 作っている人って、デザインパターン知らないんじゃないかと、ちょっと思いました。まぁ、手続き型でプログラムして何が悪いってことではあるが。

勉強会自体は、JUnit 入門 + Eclipse の使い方(Eclipse を使ったソースの読み方)勉強会になるんじゃないかな。

(昨日はそら豆には入れました... 居酒屋ご飯は微妙に苦手...)

1 comment:

師子乃 said...

おはようございます。

junitそのものの解析は見たことなかったので、興味深いです!