続・旧型体制向け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的アプローチ…

 またまだ奥は深い。