怎样编写Action测试用例
上一篇 / 下一篇 2009-07-21 13:05:34 / 个人分类:LR
1、Action层的业务逻辑比较简单。大家潜意识认为这一部分的代码不重要。
.}y)}l4aY!|051Testing软件测试网]']`-Zk[V"v2、Action层难以模拟http请求传递参数,需要依赖web容器,因此给单元测试编写带来一定的难度。
xr)vz@051Testing软件测试网 ahAN N?'Ok ~)Hw下面是一个简单的Action单元测试用例,供大家参考。基于struts的mock和webwork的ActionProxyFactory都可以进行Action的单元测试。我个人比较倾向与ActionProxyFactory做单元测试。其实写action单元测试非常简单,大致分为三步就可以完成单元测试:
YK#~"U:m7?3D6E#QS/c05Pr5C'_7b-[b0 一、设置ActionContext上下文参数
'Hs3t:r$|(j5?d0coxFGL/Xi6W0 将表单传递的请求参数添加到map中
&V;[pNncx051Testing软件测试网9rv f$eVK o|p二、创建Action动态代理对象51Testing软件测试网pnd2dD|0sb
51Testing软件测试网Q[)cV-E{T通过public abstract ActionProxy createActionProxy(String namespace, String actionName, Map extraContext) throws Exception 创建action代理对象。
BAx'nM051Testing软件测试网7V:t[ r znE S三、junit断言执行结果
W'X5GY;m^0详细用例参考:51Testing软件测试网L bL5w,e
.\b2n:E MN0 public class TestActionTest extends BaseCaseTest{51Testing软件测试网EK,DG:L
51Testing软件测试网XaQ5| M5_9\private ActionProxy proxy = null;51Testing软件测试网*E?/?/S5J
'Gl.a2S2o z+?)a#t^0 private IVoucherService voucherService;
2@DQ O:v?;?T051Testing软件测试网H&[jb7K)uTr@Before51Testing软件测试网+Rhx$b^@CUU p(w
51Testing软件测试网 F`&^h+I C Lpublic void setUp() throws Exception {
B5s9e.O&L.W0*],v8x+i-wG.[0 IMocksControl control = EasyMock.createControl();
WC$M[eL2x2z0y2uKO |J0 voucherService = control.createMock(IVoucherService.class);
a'D^Pwv051Testing软件测试网H6G9eBH/htP Map
TB/Ia;|y;[:DU0 params.put(”loginId”,”test”);
?Ea,A |4uq051Testing软件测试网 Sj@7t/@W_Vparams.put(”password”,”111111″);
^ g@,E:n}F;L ?'Y0F]*lV3uWQ0 params.put(”voucherService”, voucherService);51Testing软件测试网&FF~"_r[S7|W
51Testing软件测试网(H-{n9_2`*RMap extraContext = new HashMap();51Testing软件测试网CG3m2I7ju
51Testing软件测试网'f5eN3^2hL!MBd1B5FextraContext.put(ActionContext.PARAMETERS,params);
q*o0d.\p2~0"@ v7]-_.W@ c-J,RZqu0 try {51Testing软件测试网q;nTF7j.{0ft]9s
^4okr!^ qR0 proxy = ActionProxyFactory.getFactory().createActionProxy(”/user”, “testAction”, extraContext);51Testing软件测试网 }(]$F"k6D2Q
G,rut3n}![2yv0 proxy.setExecuteResult(false);