6.2 用Cactus对servlet测试
1. Servlet(6.1中AdminServlet.java)
2.测试类(AdminServletCactusTest.java)
import java.io.IOException;
import javax.servlet.ServletException;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
public class AdminServletCactusTest extends ServletTestCase{
private AdminServlet adminServlet;
//添加请求参数command
public void beginDoGet(WebRequest request){
request.addParameter("command","SELECT...");
}
//测试运行之前加载
@Override
protected void setUp() throws Exception {
adminServlet = new AdminServlet();
}
//测试doGet方法
public void testDoGet(){
try {
adminServlet.doGet(super.request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//断言得到的result参数为SELECT...
assertEquals("SELECT...",request.getAttribute("result"));
}
}
3.Jetty服务器
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.cactus.extension.jetty.JettyTestSetup;
public class TestAllWithJetty {
public static Test suite(){
//cactus测试的web应用环境所运行的上下文
System.setProperty("cactus.contextURL","http://localhost:8080/oohla");
TestSuite suite = new TestSuite();
suite.addTestSuite(AdminServletCactusTest.class);
//在测试执行前启动jetty并在测试结束后终止jetty
return new JettyTestSetup(suite);
}
}
6.3 用DynaMock对servlet测试
1.登录过滤器(LoginFilter.java)
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 登录过滤器
*/
public class LoginFilter implements Filter {
private String errorPage;
public void destroy() {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String login = (String)request.getSession().getAttribute("login");
if(login!=null){
chain.doFilter(request, response);
}else{
//response.sendRedirect(errorPage);
throw new IOException("User isn't login!");
}
}
public void init(FilterConfig filterConfig) throws ServletException {
this.errorPage = filterConfig.getInitParameter("errorPage");
}
}