S2JUnit4でOGNL
JUnit 4 Extensions(開発止まっている?) のPrerequisiteアノテーションにはbooleanを返すメソッド名を指定できます(このメソッドがリフレクションで呼び出され結果がtrueならばテストメソッドが実行されるという仕組み)が、S2JUnit4的にはOGNLを使うとかっこいいのではなどと思います。
こんな感じで。
import static junit.framework.Assert.assertEquals; import org.junit.runner.RunWith; import org.seasar.framework.unit.Seasar2; import org.seasar.framework.unit.annotation.Prerequisite; @RunWith(Seasar2.class) public class HogeTest { @Prerequisite(requires = "#self.bbb()") public void aaa() { assertEquals("a", "abc".substring(0, 1)); } public boolean bbb() { return true; } }
規約(public & 引数なし & 戻り値なし & 非sitatic)によりaaaメソッドがテストメソッドなのですが、bbbメソッドの結果がtrueのときだけ実行されます(上のコードの@PrerequisiteはJUnit 4 Extensionsのアノテーションではなく僕が勝手につくったもの)。
S2コンテナに管理されたコンポーネントにアクセスできたり#ENVがみれたりといろいろできそうです。
まあ思いつきなんですが、これってうれしいでしょうか...