在我的项目中,我在ServletContext中初始化了配置数据,然后我可以从内存中读取数据,并且效果很好,但是现在我写了一些junit测试,它无法初始化ServletContext。你能告诉我该怎么做吗?
问问题
3689 次
2 回答
4
有一种mock servlet的方法:How to mock servlet in spring 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 回答
3
我认为你不需要初始化配置数据servletContext
,你可以使用一个静态变量来存储配置数据,当你启动服务器时你可以初始化它。
为了在测试环境中设置完整WebApplicationContext
,您可以使用XmlWebApplicationContext
(或GenericWebApplicationContext
)传入适当的MockServletContext
实例。
在这种情况下,您可能希望MockServletContext
使用 a配置您FileSystemResourceLoader
的资源路径,以将您的资源路径解释为相对文件系统位置。
于 2013-10-08T07:51:18.210 回答