一、在web.xml中配置返调servlet
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>
org.apache.cactus.server.ServletTestRedirector
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
二、在classes目录下配置cactus.properties配置文件
cactus.contextURL=http://localhost:8080/school 测试的URL
cactus.servletRedirectorName=ServletRedirector 反调Servlet名称
三、拷贝cactus库到lib目录下
四、启动WEB Server
五、写单元测试程序
package org.school.test;


//import java.util.Random;

import junit.framework.Test;
import junit.framework.TestSuite;
import servletunit.struts.CactusStrutsTestCase;

import org.apache.cactus.WebRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



public class testUserAction extends CactusStrutsTestCase ...{
protected final Log log = LogFactory.getLog(getClass());


public testUserAction(String arg)...{
super(arg);
}

public void beginRegister(WebRequest theRequest) ...{
// theRequest.addHeader("METHOD", "POST");
// theRequest.addParameter("param", "value", WebRequest.POST_METHOD);
// Random rand=new Random();
//加载post 数量
theRequest.addParameter("username", "jingmin", WebRequest.POST_METHOD);
theRequest.addParameter("password", "vkbje76", WebRequest.POST_METHOD);
theRequest.addParameter("repassword", "vkbje76", WebRequest.POST_METHOD);
theRequest.addParameter("email", "vkbje76@163.com", WebRequest.POST_METHOD);
}



public void testRegister() ...{
setRequestPathInfo("/register");
actionPerform();
verifyNoActionErrors();
}

public void testLogin() ...{
setRequestPathInfo("/login");
addRequestParameter("username", "jingmin");
addRequestParameter("password", "vkbje76");
actionPerform();
// Enumeration names=request.getAttributeNames();
// while(names.hasMoreElements()){
// String name=(String)names.nextElement();
// log.error(name);
// }
// log.error(request.getAttribute("org.apache.struts.action.MESSAGE"));
verifyNoActionErrors();
}

public static Test suite()...{
TestSuite suite=new TestSuite();
//

suite.addTest(new testUserAction("testRegister"));
suite.addTest(new testUserAction("testLogin"));
suite.addTest(new testUtil("testMD5"));
return suite;
}
@Override

protected void setUp() throws Exception ...{
super.setUp();
}

@Override

protected void tearDown() throws Exception ...{
super.tearDown();
}

}
五、进行单元测试
以上方法可以对struts+spring+Hibernate进行测试,还可以配置文件在WEB Servlet直接进行测试
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>
org.apache.cactus.server.ServletTestRedirector
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
cactus.contextURL=http://localhost:8080/school 测试的URL
cactus.servletRedirectorName=ServletRedirector 反调Servlet名称四、启动WEB Server
五、写单元测试程序
package org.school.test;

//import java.util.Random;
import junit.framework.Test;
import junit.framework.TestSuite;
import servletunit.struts.CactusStrutsTestCase;
import org.apache.cactus.WebRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class testUserAction extends CactusStrutsTestCase ...{
protected final Log log = LogFactory.getLog(getClass());

public testUserAction(String arg)...{
super(arg);
}

public void beginRegister(WebRequest theRequest) ...{
// theRequest.addHeader("METHOD", "POST");
// theRequest.addParameter("param", "value", WebRequest.POST_METHOD);
// Random rand=new Random();
//加载post 数量
theRequest.addParameter("username", "jingmin", WebRequest.POST_METHOD);
theRequest.addParameter("password", "vkbje76", WebRequest.POST_METHOD);
theRequest.addParameter("repassword", "vkbje76", WebRequest.POST_METHOD);
theRequest.addParameter("email", "vkbje76@163.com", WebRequest.POST_METHOD);
}


public void testRegister() ...{
setRequestPathInfo("/register");
actionPerform();
verifyNoActionErrors();
}

public void testLogin() ...{
setRequestPathInfo("/login");
addRequestParameter("username", "jingmin");
addRequestParameter("password", "vkbje76");
actionPerform();
// Enumeration names=request.getAttributeNames();
// while(names.hasMoreElements()){
// String name=(String)names.nextElement();
// log.error(name);
// }
// log.error(request.getAttribute("org.apache.struts.action.MESSAGE"));
verifyNoActionErrors();
}

public static Test suite()...{
TestSuite suite=new TestSuite();
// 
suite.addTest(new testUserAction("testRegister"));
suite.addTest(new testUserAction("testLogin"));
suite.addTest(new testUtil("testMD5"));
return suite;
}
@Override
protected void setUp() throws Exception ...{
super.setUp();
}
@Override
protected void tearDown() throws Exception ...{
super.tearDown();
}
}
五、进行单元测试
以上方法可以对struts+spring+Hibernate进行测试,还可以配置文件在WEB Servlet直接进行测试
本文介绍了一种使用Struts框架进行单元测试的方法,包括配置返调servlet、cactus.properties文件,以及如何编写针对注册和登录功能的具体测试案例。

2416

被折叠的 条评论
为什么被折叠?



