specs2でテストを書いてると、テストの前に 事前や事後に処理を行いたい事があったので、メモ書き程度に書きました。


import org.specs2.mutable.{After, Specification} import org.specs2.specification.Scope class BeforeAfterSpec extends Specification { //varは再代入可能 var sample = "test1" "変数の中身が変わるか" should { "事前処理後" in new scope{ println("say exec") sample must beEqualTo("test2") } "事後処理後" in { sample must beEqualTo("test3") } } /* trait scope extends Scope{ // 事前処理 sample = "test2" } */ trait scope extends Scope with After{ // 事前処理 sample = "test2" def after = { // 事後処理 sample = "test3" } } }

traitでScopeを継承したscopeを作成し、その中に事前処理を書いておく 事前処理を行いたい場合は、in new scopeの様にinのあとにScopeをnewするように記述する。

また、with Afterを記述して、その中に def after = {….}を書くことで、事後処理も定義できる。