- 浏览: 762488 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
erpaoshouling:
赞,多谢作者整理
Maven Assembly插件介绍 -
zxjlwt:
学习了。http://surenpi.com
maven-jar-plugin 特殊用法 -
strive708:
很有用的东西,一直在找,终于找到了。感谢
hibernate4调用存储过程 -
di1984HIT:
哈哈,学习了。
突然断电oracle故障 -
di1984HIT:
不错,真的很好。
Oracle 横表和纵表
项目采用分层开发,服务端和客户端。服务端的开发需要测试,但是涉及到了servletrequest和servletresponse。这里提供两种方法。
1、easymock
2、springmock
第一种方法
代码
package com.zzrenfeng.util; import org.apache.commons.logging.*; import org.junit.*; import org.junit.runner.*; import org.springframework.mock.web.*; import org.springframework.test.context.*; import org.springframework.test.context.junit4.*; import org.springframework.test.context.support.*; import com.zzrenfeng.util.meetingapp.*; /** * * @ClassName: UserServiceTest * @Description: 单主键jdbcdao测试 * @author renjunjie * @date 2010-12-10 下午03:20:08 * */ @RunWith(SpringJUnit4ClassRunner.class) @TestExecutionListeners( { DependencyInjectionTestExecutionListener.class }) @ContextConfiguration(locations={ "classpath:resource/applicationContext-test.xml"}) public class HttpServletTest { private static final Log log = LogFactory.getLog(HttpServletTest.class); private MockHttpServletRequest request; private MockHttpServletResponse response; @Before public void setUp(){ request = new MockHttpServletRequest(); request.setCharacterEncoding("UTF-8"); response = new MockHttpServletResponse(); } @Test public void test(){ SecurityApplication sa = new SecurityApplication(); //request.setRequestURI("/loginCheck.html"); request.addParameter("userId", "9001"); //直接添加request参数,相当简单 String result = sa.getPerson(request); System.out.println(result); } }
第二种方法
package com.zzrenfeng.util; import javax.servlet.http.*; import org.apache.commons.logging.*; import org.easymock.*; import org.junit.*; import org.junit.runner.*; import org.springframework.test.context.*; import org.springframework.test.context.junit4.*; import org.springframework.test.context.support.*; import com.zzrenfeng.util.meetingapp.*; /** * * @ClassName: UserServiceTest * @Description: 单主键jdbcdao测试 * @author renjunjie * @date 2010-12-10 下午03:20:08 * */ @RunWith(SpringJUnit4ClassRunner.class) @TestExecutionListeners( { DependencyInjectionTestExecutionListener.class }) //@ContextConfiguration(locations={ "file:WebContent/WEB-INF/red5-web.xml"}) @ContextConfiguration(locations={ "classpath:resource/applicationContext-test.xml"}) public class HttpServletTest2 { private static final Log log = LogFactory.getLog(HttpServletTest2.class); private HttpServletRequest request; private HttpServletResponse response; @Before public void setUp(){ //创建request和response的Mock request = (HttpServletRequest)EasyMock.createMock(HttpServletRequest.class); response = (HttpServletResponse) EasyMock.createMock(HttpServletResponse.class); } @Test public void test(){ SecurityApplication sa = new SecurityApplication(); EasyMock.expect(request.getParameter("opens")).andReturn("123").once(); //期望使用参数 EasyMock.expect(request.getParameter("userId")).andReturn("9001").times(2); //期望调用的次数 EasyMock.replay(request); //保存期望结果 String result = sa.getPersonMeetings3G(request); System.out.println(result); } }
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final修饰方法的类,不能mock静态方法(我遇到的情况是这样)。
在使用的时候请注意:
org.easymock.classextension.EasyMock 被用来mock抽象类(abstract)和具体类
org.easymock.EasyMock被用来mock接口(interface)
使用用EasyMock的一般步骤:
1.创建一个mock对象
HttpServletRequest request = EasyMock.createMock(HttpServletRequest.class);
2.设置此对象的某个方法的返回值
EasyMock.expect(request.getParameter("userName")).andReturn("trilogy").once();
注意:必须手工设置被mock的方法的访问次数
once()
antyTimes()
times(int)
建议:在设置方法调用次数的时候,虽然你可以调用anyTimes(),但是最好明确你要调用多少次如:once()、
times(2),这样做的话显的比较严谨。
如果mock的方法没有返回值,可以这么做:
request.setAttribute("userId");
EasyMock.expectLastCall().once();
对于被mock的方法参数,也可以不必指定具体的值:
EasyMock.expect(request.getParameter((String)EasyMock.anyObject())).andReturn("trilogy").once();
如果你想让被mock的方法返回一个异常,前提是被mock的方法会抛出异常,你可以这么做:
EasyMock.expect(input.read()).andThrow(new IOException("Mocked IOException")).once();
你还可以根据调用顺序来mock同一个方法:
EasyMock.expect(request.getParameter("userName")).andReturn("trilogy").once();
EasyMock.expect(request.getParameter("userName")).andReturn(null).once();
当第一次执行request.getParameter("userName")的时候,返回“trilogy”
当第二次执行request.getParameter("userName")的时候,返回null
3.保存被mock的对象
EasyMock.replay(a);
4.在被mock的对象被应用之后,最好验证一下我们所设置的mock对象是不是按我们预期运行。
EasyMock.verify(a);
总结:
EasyMock是一个相当方便的mock工具,可以为我们的测试工作提供极大的便利,特别是在测试web层或者数据库访问的时候。
在这里我只是抛砖引玉地介绍了一下EasyMock的使用,其实EasyMock还有很多其它更高级的使用,如过你愿意的话可以访问以下的网址来获得更多信息:
官网:www.easymock.org
发表评论
-
enum使用一例
2013-08-15 17:59 1210/** * User: renjunjie * ... -
JVM Crash 学习分析
2013-07-28 17:17 1426遇到如下错误 # # A fatal error h ... -
java原样输出特殊符号
2012-08-21 17:07 6805String str1 = "test\test\t ... -
Maven命令行来创建项目
2012-07-28 23:29 16911)创建简单maven项目 mv ... -
Import Maven Project to Eclipse and Fix the errors
2012-07-28 22:55 1672使用mvn创建java项目eclipse导入报错 Mu ... -
mina学习总结
2012-07-27 09:04 1587Mina使用起来多么简洁方便呀,就是不具备Java N ... -
阿里分布式框架dubbo学习
2012-07-24 15:28 2900简单测试例子,附件 参考官方文档 http://co ... -
java系统间通信(分布式调用)
2012-07-24 10:27 2315具体见附件的例子 1、使用共享内存实现MappedBy ... -
java中的多线程总结
2012-07-23 22:20 3722多线程目录 <!--[if !supp ... -
idea生成错误
2012-07-04 21:47 1196自己打的jar包,idea引用。 第二次打的包和第一次的 ... -
如何在 64 位 linux 机器上安装 jdk1.6?
2012-07-03 10:32 3313也可以参考上篇博客《在Linux系统环境下安装配置JDK常用方 ... -
javaWeb产品项目license的开发使用
2012-03-24 15:51 12170公司开发的一个产品,提供给客户使用,要有试用的时间限制和购买的 ... -
Maven使用第三方jar文件的两种方法
2012-03-03 17:38 2011在Maven中,使用第三方库一般是通过po ... -
jquery向struts2传值的几种方式
2011-08-15 16:14 3657从web页面向服务器传送数据,传统的方式有 1、直接在url ... -
classpath 载入多个jar
2011-07-27 14:46 4657早上启动red5启动不了,也没有报什么错误,修改red5.ba ... -
How-to recover from checksum mismatch errors in SVN
2011-03-14 17:11 1500How-to recover from checksum mi ... -
Maven奇怪的错误,invalid LOC header
2010-12-28 15:20 6181今天试着整合spring3+jsf2,使用maven进行依赖管 ... -
unsupported major.minor version 解决方法
2010-04-06 17:12 1427一直以 ... -
事件不执行,也不报错
2010-03-08 10:00 1297在ftl里面的如下语句,双击事件既不执行,也不报错 & ... -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
2010-02-21 13:57 1152当Adobe、Microsof ...
相关推荐
2. **请求处理**:通过`ActionInvocation`接口,Struts2将请求分发到具体的Action执行,这涉及到Servlet API的Request和Response对象的使用。 3. **配置管理**:`ServletContext`用于存储全局配置信息,Struts2通过...
实验四的目的是让学生深入理解JavaBean和Servlet的开发流程,这二者是Java Web开发中的重要组成部分。JavaBean是一种符合特定规范的Java类,通常用于封装业务逻辑和数据,而Servlet则是在服务器端运行的Java程序,...
在本书中,读者将了解到如何使用JSP创建动态网页,如何处理用户请求,以及如何利用内置对象(如request、response、session和application)进行数据交互。 Servlet是Java平台上的服务器端程序,主要用于扩展服务器...
例如,使用`session.getAttribute()`和`session.setAttribute()`进行会话数据的存取,用`request.getRequestDispatcher()`.forward(request, response)`进行请求转发,或使用`response.sendRedirect()`进行重定向。...
7. **测试与调试**:在完成Servlet的编写后,可以通过浏览器发送GET和POST请求到相应的URL来测试。对于注册和登录功能,可以使用Postman等工具模拟不同的用户输入,检查服务器的响应。 通过以上的讲解,你应该对...
它可能包含模拟用户请求的JUnit测试用例,以及断言来检查结果是否符合预期。 以上就是关于"JavaServlet示例代码"的关键知识点,涵盖了Servlet的基本用法、用户注册登录流程以及常见的安全性考虑。理解和掌握这些...
开发者通常会在测试资源中设置模拟数据和预期结果,以便验证应用程序的功能是否符合预期。 在实际学习或开发过程中,JSPServletDemo项目涉及的知识点包括: 1. **JSP基本语法**:了解JSP的指令(如`<%@ page %>`, ...
可以编写单元测试,模拟用户操作,检查系统的行为是否符合预期。同时,利用IDE的调试工具可以帮助定位和修复潜在的bug。 这个基于jsp和servlet的购物车系统实例为初学者提供了实际操作的机会,通过学习和理解这个...
比如,`studentList.jsp`用于显示学生列表,`addStudent.jsp`用于添加新学生的表单,它们可以通过JSP内置对象如request和response与Servlet进行数据传递。 【数据库设计】数据库设计是信息管理系统的核心部分。可能...
在这个“Servlet学习开发登录页面实例源码”中,我们将深入理解Servlet如何实现一个简单的登录功能。 首先,让我们了解Servlet的基础知识。Servlet是一个Java类,它遵循Java Servlet API规范。在Web应用中,每当...
在线模拟考试系统是一种基于Web的应用程序,它允许用户在互联网上进行模拟测试,以检验学习效果或准备实际考试。这个系统通常包含多个功能模块,如考生管理、试题库管理、考试安排、成绩统计等。本项目使用JSP(Java...
当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request....
在Java Web开发中,文件上传是一项常见的功能,而SmartUpload是一个流行且强大的文件上传组件,它简化了在JSP和Servlet中处理文件上传的过程。本文将深入探讨如何在Servlet环境中利用SmartUpload进行文件上传操作。 ...
在压缩包文件`CometTest`中,可能包含了一个简单的Comet实现示例,你可以通过学习和运行这个例子来深入理解Servlet3.0异步处理和Comet页面推送的工作原理。通过实践,你可以更好地掌握如何在实际项目中利用这些技术...
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request....
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello, World!"); } } ``` 接着,Web应用程序的配置...