A FIT-like library for Scala - A++ [Eric Torreborre's Blog]

http://etorreborre.blogspot.com/2009/04/fit-like-library-for-scala.html

specsでFIT/Fitnesse風なテストがかけるようにしてみるよってな話。たしかにspecsのサイト覗いてみると,こんなページが見つかった。
Google Code Archive - Long-term storage for Google Code Project Hosting.


曰く,ビジネスユーザに(FITの)仕様書なんて書けないし,維持も出来ない。むしろ開発者が(FITを)使っている。開発者が持っているツールを使わない手はない(FITってWikiだからな)...とかなんとか。そこで考えたのが,ScalaXMLリテラルを使った「動く仕様書」なんだと。
例示すると,こんなの。

class HelloWorldSpecification extends HtmlSpecification {
  "The greeting application" is <textile>
  h3. Presentation

  This new application should say "hello" in different languages.
  For example,<ex>by default, saying hello by default should use English</ex>
  { greet must_== "hello" }
  </textile>
}

ポイントは,次の2つ。


感想は,素直に「面白い!!」だ。ぱっと見,変態構文に見えるけど,ふつーにScalaの文法に則っているんで特別なプラグインとか要らない。実際,IntelliJで問題なく編集できてる。
それと型付言語だからコンパイルチェックやリファクタリングなんかも期待できるし,何よりspecsというScalaでは割合標準的なツールで出来るってのがイイネ。
JavaやGroovyだとBDD系のライブラリがいっぱいあって,どれにするかで悩むけど,それが無いってのがよい。:-)


狙いが同じなのに,コンセプトがConcordionと全く異なるってのも面白い。
Concordionは,まだビジネスユーザに参加してもらうことを期待しているので,仕様書はHTMLにこだわったし,実行部(フィクスチャ)も分離している。それに対して specs は,マークアップwiki(Markdown形式)で仕様とフィクスチャを分けない。
#ちなみに,specsのマークアップは切り替え可能みたい((X)HTMLでも書けた)。


どっちが良い悪いってことは一概に言えないけど,個人的好みとしては specs のほうが好きだな。
Scalaって興味あるけどイマイチ使いどころがなくて持て余してたが,テストツールにつかうって道ができたかもダ。


ps.
幾つかの注意点を...

  • Literate Specificationsはαバージョンなので,ご注意を。
    • 1.4.5-SNAPSHOTでしか試してないけど,wiki記法が評価されんかった。:-(
  • Mavensurefireでテストしてもレポート(仕様書)は生成されない。