Hatena::Groupseasarproject

S2できるかな?

2012-09-26

MessageResourceのDIをS2JUnit4で。

ServiceとかLogicクラスのテストをする時、中でMessageResourcesUtilを使っていると、NullPointerExceptionが…。 MessageResourceの設定はstruts-config.xmlで行われているので、JUnitのテストだと、MessageResourceの設定が行われないんですね。

SAStrutsのMessageResourceUtilを割とよく使っているのですが、

MessageResourceの設定をstruts-config.xmlでおこなっていたため、

S2Unitのとき設定が反映されず、エラーが出ていました。

SAStrutsのMessageResourceUtilを使っているソースでS2Unitを実行するには - 草木のにをいに誘われた

まぁ、皆、同じ所でつまづいてるんですね…。

上記記事を、S2JUnit4に合せて、まず以下の記述をs2junit4.diconに記述

	<component name="s2propertyMessageResourcesFactory" 
		class="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
	<component name ="s2propertyMessageResources" 
		class="org.seasar.struts.util.S2PropertyMessageResources">
		<arg>s2propertyMessageResourcesFactory</arg>
		<arg>"application"</arg>
	</component>

で、テストケースは以下のように。

@RunWith(Seasar2.class)
public class HogeLogicTest {

    private ServletContext application;

    private MessageResources s2propertyMessageResources;

    public void postBindFields() throws Exception {
        application.setAttribute(Globals.MESSAGES_KEY, s2propertyMessageResources);
    }

    @Test
    public void testHogeMethod() {
        // ....
    }
}
トラックバック - http://seasarproject.g.hatena.ne.jp/halflite/20120926