struts2.0 + Sping2.5 进行单元测试
来源:互联网 发布:mac地址手机怎么进入 编辑:程序博客网 时间:2024/06/01 10:25
struts2.1版本以上 使用 getActionProxy() 来获取到 ActionPoxry对象,在测试Action层比较容易。
那么使用struts2.0 ,怎么来获取 ActionPoxry对象呢?我暂时没有什么比较好的办法。
测试Action层主要问题是怎么获取到请求中request,session中值。Struts2中提供ServiceActionContent可以获取到当前Request中的值。
那么就需要模拟给ServiceActionContent赋值。例如:
MockHttpServletRequest request = new MockHttpServletRequest();
ServletActionContext.setResponse(response);
这样就可以模拟把需要的值赋值进去。
下面是我写的示例:只把Action层,测试方法展现出来,其他配置就不在这里说明了。
Action层:
public String checkLogin() {
String P3PString = "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR";//通过设置P3P头来实现跨域访问COOKIE
getResponse().setHeader("P3P",P3PString);
String rtn = "failure";
if(userName==null)
return rtn;
if(passwd==null)
return rtn;
String md5Passwd = MD5Util.MD5(passwd);
try {
userName = userName.trim().replace(" ", "");
boolean result = loginService.login(userName, md5Passwd);
if (result) {
getSession().setAttribute(SessionConstants.CUR_USERINFO, loginService.getSysUser());
Constants.sessionMap.put(userName, getSession().getId());
//cookie
if (rememberMe != null && rememberMe.trim().equals("1")) {
maxAge = 365 * 24 * 60 * 60;// 保留Cookie一年
} else {
maxAge = 0;// 清除cookie
}
cookieValue = "name:"+userName+",pwd:"+passwd;
CookiesLogin.setCookiesValue(this.getRequest(), this.getResponse(), cookieName, cookieValue, maxAge);
//写登录日志
loginService.insertLog(loginService.getSysUser().getUserName(), loginService.getSysUser().getFullName());
//获取模块
List<Module> moduleList=null;
moduleList=moduleService.getModule(loginService.getSysUser().getUserId());
getSession().setAttribute(SessionConstants.CUR_MODULEINFO, this.getMenuList(moduleList));
rtn = "success";
}
} catch (Exception e) {
e.printStackTrace();
}
return rtn;
}
测试代码:
/** 使用哪个运行器* */
@RunWith(SpringJUnit4ClassRunner.class)
/** 设置要加载的配置文件 */
@ContextConfiguration(locations = {
"classpath:config/applicationContext*.xml" })
// /** 设置是否回滚数据 */
@TransactionConfiguration(transactionManager = "myTransactionManager", defaultRollback = false)
@Transactional
public class BaseCaseTestAction extends StrutsTestCase{
@Autowired
public LoginAction loginAction;
@Test
public void tesLogin(){
MockHttpServletResponse response = new MockHttpServletResponse();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpSession session = new MockHttpSession();
request.setSession(session);
ServletActionContext.setResponse(response);
ServletActionContext.setRequest(request);
loginAction.setUserName("liq");
loginAction.setPasswd("123456");
String result = loginAction.checkLogin();
assertEquals("success", result);
}
}
这样的测试不太完善,本人暂时没有想到别的方法。
有什么好的方法希望大侠们多多指点
- struts2.0 + Sping2.5 进行单元测试
- Sping2.0 + Struts2.0 +Ibatis 的使用总结
- struts2 sping2 hibernate3.2新手入门
- Sping2.5整合JPA
- sping2.0手记
- sping2+struts2+hibernate3项目整合H2数据库
- 用Spring2.5进行单元测试
- 利用Mockito进行单元测试[0]
- struts2 单元测试
- Struts2单元测试
- strtus2.1.6+hibernate3.2+sping2.5整合方法
- 进行单元测试
- Xcode 5 单元测试(一)使用XCTest进行单元测试
- Xcode 5 单元测试(一)使用XCTest进行单元测试
- Xcode 5 单元测试(一)使用XCTest进行单元测试
- Xcode 5 单元测试(一)使用XCTest进行单元测试
- Xcode 5 单元测试(一)使用XCTest进行单元测试
- Spring3.0结合JUnit4进行单元测试
- I帧、P帧和B帧的特点
- 经典软件推荐:AppVerifier(应用程序验证器)
- 成为一个顶级设计师的八大秘诀
- Linux下JNI的初次运行问题
- 电脑无法启动分析
- struts2.0 + Sping2.5 进行单元测试
- Java对对象的序列化和反序列化
- No 98 · Android 下载文件及写入SD卡(摘)
- The Classical Example using DOM to operate a XML File
- 了解电脑启动的过程
- 告别人工智能之父、Lisp语言发明者John McCarthy
- 接着我的论坛来
- 计算结构体大小
- Android UI开发第六篇——仿QQ的滑动Tab