首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

大家怎么单元测试JSP~小弟我都弄了四天了,还是没搞定

2012-03-01 
大家如何单元测试JSP~我都弄了四天了,还是没搞定~如何单元测试JSP呀。先说一下,我使用的IDE为m2eclipse~我

大家如何单元测试JSP~我都弄了四天了,还是没搞定~
如何单元测试JSP呀。

先说一下,我使用的IDE为m2eclipse~

我从JUnit in Action的书中了解到可以使用cactus来实现,于是我就Google了很久及看maven官网,来使用maven3及插件cactus.integration.maven2来实现集成单元测试自动化(其中用到了war插件来打包及cargo插件来自动部署及开启关闭服务器)。但cactus.integration.maven2插件没有JUnit in Action书中提到的cactus目标,所有还是要手动输入URL来测试。但这几乎还是我不想要的。

以上费了我两天中的业余时间,就为了单元测试JSP!命苦呀!


接着我又GOOGLE,说JUnit recipes有一章说了单元测试JSP。于是我就看了那一章的关于单元测试JSP的节~

写下了代码:

Java code
package jsps;import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.util.*;import javax.servlet.ServletException;import javax.servlet.http.*;import junit.framework.*;import com.dongantech.eshop.model.*;import com.dongantech.eshop.services.requests.*;import com.dongantech.eshop.services.responses.*;import com.dongantech.eshop.web.servlets.*;import com.dongantech.eshop.services.handlers.*;import org.easymock.*;import com.meterware.servletunit.*;import com.meterware.httpunit.*;public class TestMemberManagerServletResponseJsps extends DongAnShopJspFixture{    private ServletRunner servletRunner = null ;    private RequestHandler mockFindHandler = null;    private MockControl requestHandlerMockControl = null ;        public void setUp(){        try {            servletRunner = new ServletRunner(new File(DongAnShopJspFixture.getWebDeploymentDescriptorPath()),"/donganshop");                        requestHandlerMockControl = MockControl.createControl(RequestHandler.class);            mockFindHandler = (RequestHandler) requestHandlerMockControl.getMock();        } catch (Exception e) {            e.printStackTrace();            fail("fail to new ServletRunner!");        }    }    public void testFoundResponseJsp() throws Exception{        Member preparedMember = new Member("lj");        Request preparedRequest = new SimpleRequest();        Map requestContext = new HashMap();        requestContext.put("memberFound",preparedMember);        preparedRequest.setContext(requestContext);        preparedRequest.setName(SimpleRequest.TYPE_FIND);                mockFindHandler.process(preparedRequest);        requestHandlerMockControl.setReturnValue(createMemberFoundResponse());        requestHandlerMockControl.replay();        ////////////////////////////////////////////////////////////////////////////////////////////////////////        ServletUnitClient client = servletRunner.newClient();        WebRequest request = new GetMethodWebRequest("http://localhost/donganshop/members/memberManager");        request.setParameter("request",SimpleRequest.TYPE_FIND);        request.setParameter("username","lj");                InvocationContext invocationContext = client.newInvocation(request);        MemberManagerServlet servlet = (MemberManagerServlet) invocationContext.getServlet();        servlet.putIntoRequestHandlers("FIND",mockFindHandler);                HttpServletRequest httpReq = invocationContext.getRequest();        HttpServletResponse httpResp = invocationContext.getResponse();        servlet.getPages().put(SimpleResponse.TYPE_FOUND,MemberManagerServlet.PAGE_FOUND);        servlet.service(httpReq, httpResp);        WebResponse response = invocationContext.getServletResponse();                System.out.println(response.getText());    }    public void tearDown(){        requestHandlerMockControl.verify();    }    public Response createMemberFoundResponse(){        Response resp = new SimpleResponse();        List<Member> foundMembers = new ArrayList();        foundMembers.add(new Member("lj"));        foundMembers.add(new Member("lj520"));        resp.setType(SimpleResponse.TYPE_FOUND);        resp.getContext().put("members", foundMembers);        return resp;    }}

帖子过长,看下贴:




[解决办法]
JSP属于View层,我认为可以进行js test或ui test,除非你把很多业务都写在JSP了,否则不用像测试后台代码那样搞。
[解决办法]
out.print 输出测试。看执行到那一块了!
[解决办法]
我们公司的测试组才4个人。。他们测试就是直接运行看效果。。
[解决办法]
我的天吖,原来是高手。。。。
[解决办法]
既然都是到jsp,这个就不是看数据了,而是看整个界面的展示效果。
不要在代码单元测试了,在怎么单元你还是在代码里面,体现不出来,
直接在浏览器回车

热点排行