4

私のプロジェクトでは、ServletContext で構成データを初期化した後、メモリからデータを読み取ることができ、うまく機能しましたが、いくつかの junit テストを作成したところ、ServletContext を初期化できませんでした。どうすればいいのか教えていただけますか?

4

2 に答える 2

4

サーブレットをモックする方法があります:春の mvcでサーブレットをモックする方法 ですが、servletContext で構成データを初期化する必要はないと思います。静的変数を使用して構成データを保存し、サーバーを起動するときに初期化できます。コードは次のとおりです。

public class InitProperties {

private static Logger logger = Logger.getLogger(InitProperties.class);

public static Map<String, String> propertiesMap = new HashMap<String, String>();

public static void initProperties(){
    String filePath = FilePathConstant.XXX_CONF;
    Properties props = new Properties();
    InputStream in = null;
    try {
        in = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
        props.load(in);

        Set keySet = props.keySet();

        for(Object o: keySet){
            propertiesMap.put(o.toString(), props.getProperty(o.toString()).toString());
        }
    } catch (Exception e) {
        logger.error("Read property value by key failed!", e);
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            logger.error("Close inputStream failed!", e);
        }

    }
}

}

サーバーを起動するときにメソッドを呼び出すだけInitProperties.initProperties()で、から構成データを読み取ることができますInitProperties.propertiesMap

于 2013-09-30T07:33:37.067 に答える