Concordionという、受け入れテスト自動化向けフレームワークを知ったので、ちょっと動かしてみた。Screenshotsを見るとイメージしやすいかもしれないが、ユーザーストーリの書式や、テスト仕様書の書式で、受け入れテストを記述できるらしい。
インストールしてみる
Tutorialとしてサンプルコードが公開されている(Instrationを参考のこと)ので、それを元に動かしてみる。今回使ったバージョンは、1.4.2でJavaのfixtureを使った。Ruby、.NET、Scala、Pythonのfixtureもあるらしい。ダウンロードしたファイルをEclipseにImportするとこんな感じ。
- 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をブラウザで開くとこう見える。
このHTMLはHelloWorld.htmlと全く一緒。つまり、テストに成功すると、用意した「HelloWorld.html」と同じ結果となる。逆に、失敗すると以下のようなHTMLが出力される。
「HTMLで受け入れテスト仕様書を書く」というのがイメージできただろうか?ブラウザを立ち上げて実際にWebを通してテストするSelenium WebDriverとは違って、HTMLで書いたテスト仕様書を使ってxJUnit動かせるよ!みたいな感じですね。