直感的に受け入れテスト仕様書を記述できるConcordionを試してみた

Screen Shot 2013-01-15 at 5.18.47 PM

Concordionという、受け入れテスト自動化向けフレームワークを知ったので、ちょっと動かしてみた。Screenshotsを見るとイメージしやすいかもしれないが、ユーザーストーリの書式や、テスト仕様書の書式で、受け入れテストを記述できるらしい。

インストールしてみる

Tutorialとしてサンプルコードが公開されている(Instrationを参考のこと)ので、それを元に動かしてみる。今回使ったバージョンは、1.4.2でJavaのfixtureを使った。Ruby、.NET、Scala、Pythonのfixtureもあるらしい。ダウンロードしたファイルをEclipseにImportするとこんな感じ。

Screen Shot 2013-01-15 at 5.35.52 PM

  • Greeter.java・・・テスト対象のクラス
  • specsフォルダ・・・受け入れテストのソースフォルダ。JUnitだと「test」とかだけど、Concordionでは「specs」を使う
  • concordion.css・・・受け入れテストの仕様書がHTMLなので、そのHTML用のスタイルシート
  • HelloWorldTest.java・・・テストケース。ConcordionTestCaseを継承している
  • HelloWorld.html・・・Concordion用の受け入れテスト仕様書

Concordionは、JDK1.5以上で動作する。必要なライブラリも上を参照のこと。

サンプルを動かしてみる

テスト対象となるGreeter.javaのコード。文字列返すだけのシンプルなクラス。

https://gist.github.com/daipresents/46d852be95712cf81fc5015463194a2c.js?file=gistfile1.txt

テストケースとなるHelloWorldTest.java。テストメソッド名が「testGreetingFor」とかじゃなくていいみたい。

https://gist.github.com/daipresents/46d852be95712cf81fc5015463194a2c.js?file=gistfile2.txt

JUnitとかとの違いは、テストメソッドに引数を与えれるところ。テストケース自体が入力を受け入れることができて、入力はConcordion用受け入れテスト仕様書であるHTMLに書くことができる。

HelloWorld.htmlには、入力とassertを入れているのがわかる。

https://gist.github.com/daipresents/46d852be95712cf81fc5015463194a2c.js?file=gistfile3.txt

HelloWorldTest.javaを実行するとJUnitが起動してHTMLファイルが出力される。このHTMLをブラウザで開くとこう見える。

Screen Shot 2013-01-15 at 5.48.04 PM

このHTMLはHelloWorld.htmlと全く一緒。つまり、テストに成功すると、用意した「HelloWorld.html」と同じ結果となる。逆に、失敗すると以下のようなHTMLが出力される。

Screen Shot 2013-01-15 at 5.54.46 PM

「HTMLで受け入れテスト仕様書を書く」というのがイメージできただろうか?ブラウザを立ち上げて実際にWebを通してテストするSelenium WebDriverとは違って、HTMLで書いたテスト仕様書を使ってxJUnit動かせるよ!みたいな感じですね。