读书人

SSH2调整时struts的action用junit测

发布时间: 2013-08-01 15:23:18 作者: rapoo

SSH2整合时,struts的action用junit测试

听说能用junit直接测试struts的action,感觉很有用,这样单元测试终于能直接测试web了,试着用一下。

工程首先导入StrutsSpringTestCase所在的包-struts2-junit-plugin-2.3.14.jar

然后编写测试类

public class UserActionTest extends StrutsSpringTestCase{
?
?@Override
?protected String[] getContextLocations() {
??return new String[]{"classpath:applicationContext.xml"};
?}
?@Test
?public void testLogin() throws Exception{
??request.setParameter("userName", "zhangsan");
??request.setParameter("userPwd", "123456");
??ActionProxy proxy=this.getActionProxy("/user!login");
??UserAction action=(UserAction)proxy.getAction();
??String result=action.login();
??Assert.assertEquals("success", result);
?}
?@Test
?public void testRegister() throws Exception{
??request.setParameter("userName", "zhangsan");
??request.setParameter("userPwd", "123456");
??ActionProxy proxy=this.getActionProxy("/user");
//??UserAction action=(UserAction)proxy.getAction();
??String result=proxy.execute();
??Assert.assertEquals("register", result);
?}
}

发现有两个问题,1个是重写getContextLocations方法,否则找到的spring配置文件仍然是WEB-INF下面的。

另一个就是对于proxy.execute();方法,能取到request提供的参数,但对于自定义的Action中的方法,例如

UserAction.login()方法,??

ActionProxy proxy=this.getActionProxy("/user!login");
??UserAction action=(UserAction)proxy.getAction();
??String result=action.login();

这样是取不到request中的参数的,所以可以在execute方法里直接执行login方法,暂时还没找到其他的处理方法。

读书人网 >编程

热点推荐