今日調べていたら、SAStrutsのMessageResourceUtilを使っているソースでS2Unitを実行するには - 草木のにをいに誘われた を見つけたので何とかなりました。
ただ、S2JUnit4 の場合 S2TestCase を継承しないので、ServletContext をどっからか取得しないとダメです。
でこれは、自動フィールドバインディングで設定するようにしました。
※S2JUnit.dicon はデフォルトの設定です。Seasar - DI Container with AOP -
@RunWith(Seasar2.class)
public class HogeTest {
public ServletContext servletContext;
public void hoge() {
S2PropertyMessageResourcesFactory factory = new S2PropertyMessageResourcesFactory();
S2PropertyMessageResources resources = new S2PropertyMessageResources(factory, "application");
servletContext.setAttribute(Globals.MESSAGES_KEY, resources);
// 以降テスト
// 〜
}
}
ただ難点は、S2JUnit4 は before では、ServletContext の自動フィールドバインディングが完了していないので、各テストメソッド毎に実装する必要がある事。
なんか良い方法ないかな?それとも使い方間違ってる?