使用easymock单元测试
以webwork的ApplicationMap的get方法为例
//建立mock对象
mockControl = MockControl.createControl(ServletContext.class);
mockServletContext = (ServletContext) mockControl.getMock();
applicationMap = new ApplicationMap(mockServletContext);
// 测试getAttribute()不等于null情况.这一段代码相当于录像机,录制下getAttribute("user")方法,参数1表示在一次applicationMap.get()方法中的第几次调用,此处只有一次,可以不用
mockServletContext.getAttribute("user");
mockControl.setReturnValue("kent",1);
// 测试getAttribute()等于null情况.设置第二次get,同样不需要加参数1
mockControl.setReturnValue(null,1);
mockServletContext.getInitParameter("user");
mockControl.setReturnValue("kent");
//重新播放
mockControl.replay();
assertEquals(applicationMap.get("user"), "kent");
assertEquals(applicationMap.get("user"), "kent");
//确认已经被调用的次数和内容是否符合
mockControl.verify();
以webwork的ApplicationMap的get方法为例
//建立mock对象
mockControl = MockControl.createControl(ServletContext.class);
mockServletContext = (ServletContext) mockControl.getMock();
applicationMap = new ApplicationMap(mockServletContext);
// 测试getAttribute()不等于null情况.这一段代码相当于录像机,录制下getAttribute("user")方法,参数1表示在一次applicationMap.get()方法中的第几次调用,此处只有一次,可以不用
mockServletContext.getAttribute("user");
mockControl.setReturnValue("kent",1);
// 测试getAttribute()等于null情况.设置第二次get,同样不需要加参数1
mockControl.setReturnValue(null,1);
mockServletContext.getInitParameter("user");
mockControl.setReturnValue("kent");
//重新播放
mockControl.replay();
assertEquals(applicationMap.get("user"), "kent");
assertEquals(applicationMap.get("user"), "kent");
//确认已经被调用的次数和内容是否符合
mockControl.verify();