Specs2でJUnitで言うところのBeforeClass、AfterClassってどうやるの?

例えばPlay2アプリを作っていてテストを書きたい場合、例えばDBを使ったテストなど、アプリケーションのコンテキストに依存するテストを書く場合、fakeApplicationを起動しないといけません。
ですが、テストケースごとにfakeApp起動してたらテストが遅くなるので、例えばJUnitなら@BeforeClassや@AfterClassアノテーションを使ってそのテストファイルの最初と最後に一度だけ起動停止を行う、みたいにするとテストケースごとの起動停止がなくなってテストが早くなります。


今Play2(Scala)でアプリを書いているのですが、Scalaの場合何も考えなければSpecs2を使って書くことになるわけですが、Specs2で上記のことをやろうと思った場合どう書けばいいのかが分からなくてウンウン唸ってたのようやく解決できたのでその備忘録です。


結論から言うとstepというのを使うと出来るみたい。


ざっとコード読んだ感じ、Specs2はFragmentと呼ばれる実行単位のリストを持っていて、shouldとかinとかでそのリストへ追加する、みたいな構造になっているっぽいです。
stepはリストへ処理を追加する関数で、これを任意の位置に追加すればBeforeClass、AfterClass的なことができました。


具体的には

こんな感じ。