続・旧型体制向けUnitTest
reki 『Mindとはまた…… それはそうと、逆にJUnitTestのソースコードから assert を抽出してを帳票化するアプローチの方が現実的でない?』
というコメントからいろいろ考えてみる。
まず、帳票化する意図は何かというとどんなテストを何項目実施したか、を洗い出すことなのだが、マッピング上はこんな感じになるのか。
- あくまで testHoge() testFuga() で1項目ずつになる
- testHoge()内には当然assertが含まれまくっているわけだが、これは「1項目」の中の「事前条件」「事後条件」である。
と、すると、
- 「事前条件」「事後条件」を判断する方法がない
- 「処理内容」を検出する方法がない
という問題がある。前者に関しては例えばアノテーションのような方法を使えばいけるのではないか? いや、もっといい方法があるのか?
- J2SE1.5ならannotationで「事前条件」と「事後条件」のアサーションを明記してやればいい
- TestCaseのサブクラスを作る。これは例えば HytelighsysTestCaseみたいな名前を付けるとして、 assertPreTrue() とか assertPostTrue() とかになっている。ここまで来ると、シグネチャの違いから事前と事後の区別が可能である。
なんとなく、この方法は現実的かもしれないぞ。では「処理」を追跡する方法はどうか…? うーん、これはさすがに「Java -> 日本語逆コンパイラ」が必要になりそうなので、単純には難しそう。
ただ、上のアノテーションなんかを「使っていい」ということにするのであればこの際
/** * . * . * @testcase:subject * データベースに10秒以内に接続出来ない場合にエラーログが出力されることを * 確認する * @testcase:pre . .
というようなことも可能ではないか。
あれっ・・・これって XDoclet的アプローチ…
またまだ奥は深い。