今日調べていたら、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 の自動フィールドバインディングが完了していないので、各テストメソッド毎に実装する必要がある事。
なんか良い方法ないかな?それとも使い方間違ってる?