JBehaveを使ったテスト結果のドキュメント化

行動力を見せるぜ!ってことで、一応できた。まぁ、ちょっと調整時期なので時間が出来ただけですが。

  • org.jbehave.core.BehaviourRunnerを継承したクラスを用意し、verifyBehaviourメソッドを改造。PlainTextListenerを自分が作成したListenerに変更。
  • org.jbehave.core.listener.BehaviourListenerを実装するクラスを用意し、gotResultメソッドでResultを溜め込む。
  • 溜め込んだResultリストをDOMに展開、XSLスタイルシートを適用してHTML形式のファイルとして出力。
  • そのままだとResult.name()にはbehaviorメソッドの名前がそのまま入るので、behaviorメソッドの命名規則を日本風に改変。「start with "should"」から「end with "こと"」に。これが案外しっくりくる(笑

と、ここまで完了。案外簡単にできたかも*1オープンソースって、本当にいいもんですね。こんな↓感じの素朴なHTMLレポートが出ました。例はコード品質を追求する: ビヘイビア駆動開発を舞台にした冒険より。

試験項目および結果表
実施日時:Thu Feb 21 13:31:50 JST 2008

                                                                          • -

containerName:sample.StackBehavior

試験項目 結果 障害内容
何もプッシュしないでpeepした場合にはpeepが例外をスローしてまだ何もプッシュされていないことを通知すること
peepして取得した後にはstackの値を保持すること 不良 VerificationException: Expected: same instance as <data2> but got: <data1>:
何もプッシュしないでpopした場合にはpopが例外をスローしてまだ何もプッシュされていないことを通知すること
null値がpushされた場合には例外をスローすること
最後にpushした値をpopで取得できること
puchした値をpopで取得できること

テスト実行のたびに試験結果をDBに格納すると、ある時点での試験結果や、試験結果の時間的推移をいつでもレポート化できるようになるので、DBに保存するListenerを用意するのが今後の課題か。試験項目名とかの情報管理にアノテーションを使っても良いかもしれない。

あとは、実際のお仕事で使ってみる機会…が作れればいーんだけど。

*2

*1:javaをまともに触りだして約2年。「staticって何?」ってレベルを思い出すと、感慨深いものはあるw

*2:あと、こういうソースをどう公開すれば良いのか迷う。ブログに貼れるような小さいものならともかく。一応勤務時間中の会社資産で作ったものではあるし、でも積極的に売るものでもないし、でも同業他社と差をつける部分でもあるし、でも多くの人に使ってもらうことによる自分達へのメリットはあるし、いやしかし…。オープンソースって個人に対する評価に直結するけど、会社としては直結するわけでもなかったりするし。id:higayasuoさんが電通やめて転職したからといって、彼のseasarへの評価は変わらないだろうし。どう考えればいいんでしょうね。んー、恐らく、オープンソースというモノに対する考え方について、俺はまだよく理解できていないんだろうし、保守的な会社にどう説得力のある説明ができるかという課題でもある。