• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

追求代码质量: 测试 Struts 遗留的应用程序

发布: 2008-6-20 14:19 | 作者: 不详 | 来源: 领测软件测试网编辑整理 | 查看: 36次 | 进入软件测试论坛讨论

领测软件测试网 软件测试技术门户!NkUp]rd S

Zq2@%YU软件测试技术门户g4MLQ M(I"[
清单 1. 这个方法看起来容易测试……软件测试技术门户#v!C\nu7sq*TG

OeT!YKX#|6A3x
public ActionForward execute(ActionMapping mapping, ActionForm aForm, 
		HttpServletRequest req, HttpServletResponse res) throws Exception {
 try{
  
   String newPassword = ((ChangePasswordForm)aForm).getNewPassword1();
   String username = ((ChangePasswordForm)aForm).getUsername();

   IUser user = DataAccessUtils.getDaos().getUserDao().findUserByUsername(username);

   user.digestAndSetPassword(newPassword);
   DataAccessUtils.getDaos().getUserDao().saveUser(user);	

 }catch(Throwable thr){				
     return findFailure(mapping, aForm, req, res);
 }
 return findSuccess(mapping, aForm, req, res);	
}
软件测试技术门户+M-q1L/V%u
图 1. Action 类的输出耦合
5n/}i0p@Z"}
C h7gC#s(V

(P2@o v-Np但是,就像在图 1 中可以看到的,在试图隔离 ChangePasswordAction 类并检验 execute() 方法时,该类给出了一些有代表性的挑战。为了有效地测试 execute() 方法,必须处理三层耦合。首先,到 Struts 自身的耦合;其次,Servlet API 代表一个障碍;最后,到业务对象包的耦合,进一步检查业务对象包,还会有数据访问层使用 Hibernate 和 Spring。

hz5w \8o@#t
每种情况一个 mock?
.Y