使用Cactus+Jetty进行servelt的单元测试
作者:网络转载 发布时间:[ 2013/9/22 10:28:06 ] 推荐标签:
测试类:
package junitbook.container;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
public class TestSampleServletIntegration extends ServletTestCase
{
private SampleServlet servlet;
public static Test suite()
{
System.setProperty("cactus.contextURL", "http://localhost:8080/test");// 这步很重要,一定要有
TestSuite suite = new TestSuite("All tests with Jetty");
suite.addTestSuite(TestSampleServletIntegration.class);
return new Jetty5XTestSetup(suite);
}
protected void setUp()
{
servlet = new SampleServlet();
}
public void testIsAuthenticatedAuthenticated()
{
session.setAttribute("authenticated", "true");
assertTrue(servlet.isAuthenticated(request));
}
public void testIsAuthenticatedNotAuthenticated()
{
assertFalse(servlet.isAuthenticated(request));
}
public void beginIsAuthenticatedNoSession(WebRequest request)
{
request.setAutomaticSession(false);
}
public void testIsAuthenticatedNoSession()
{
assertFalse(servlet.isAuthenticated(request));
}
}
有几点要说明:
1.测试类要继承ServletTestCase,内置了session,request,response,可直接用
2.jetty不要用单独下载的版本,每个cactus发行版都内置了一个jetty,在lib目录下可以找到,显然是改写过的,如果你用单独下载的,一定会抛出java.lang.NoSuchMethodException: org.mortbay.jetty.nio.SelectChannelConnector.setPort(java.lang.String),因为在单独的jetty发行版中,setPort用的参数是int,所以会抛异常,不知cactus为什么要这样搞。
3.还要依赖commons codec这个jar
4.如果jetty是5.x,用Jetty5XTestSetup,如果是6.x,用Jetty6XTestSetup,不过当前这个cactus用的还是jetty5.1.9(org.mortbay.jetty-5.1.9.jar),所以用Jetty5XTestSetup。
这些,jetty启动很快,过段时间还要研究一下怎么来测试struts2。
相关推荐
更新发布
常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11系统性能测试及调优前期准备
2021/4/15 14:41:29国内比较好用的5款测试管理工具
2021/3/25 17:23:31