现在我正在编写我的类的测试用例。我想将HttpServletRequest对象参数传递给我的测试用例方法,以检查方法是否正常工作。所以任何人都给我这个建议。
public void testCheckBatchExecutionSchedule() throws Exception
{
assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
}
答案 0 :(得分:37)
Spring提供了一个名为MockHttpServletRequest的类,可用于测试需要HttpServletRequest的代码。
public void testCheckBatchExecutionSchedule() throws Exception
{
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("parameterName", "someValue");
assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
}
答案 1 :(得分:12)
你应该使用模拟库来模拟请求对象,比如http://code.google.com/p/mockito/
public void testCheckBatchExecutionSchedule() throws Exception
{
HttpServletRequest mockRequest = mock(HttpServletRequest.class);
//setup the behaviour here (or do it in setup method or something)
when(mockRequest.getParameter("parameterName")).thenReturn("someValue");
assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(mockRequest));
}
答案 2 :(得分:7)
HttpServletRequest
是一个界面。在过去,我只是创建了一个类(例如TestHttpServletRequest
),它为HttpServletRequest
中的每个方法都有一个空方法体,除了我实际需要的那些。对于大多数方法,我返回了一个实例变量,并为该实例变量包含了一个setter,以便测试用例可以定义返回的内容。 HttpServletRequest
有很多方法,但大多数IDE(我使用Eclipse)都可以生成方法存根。
HttpServletRequestWrapper
的问题在于它仍然需要将另一个HttpServletRequest
传递到其构造函数中,以作为每个方法的默认行为。传递null
会产生NullPointerException
。
答案 3 :(得分:0)
2018年2月更新:OpenBrace Limited has closed down,不再支持其ObMimic产品。
您还可以使用Servlet API测试双精度的ObMimic库:
import com.openbrace.obmimic.mimic.servlet.http.HttpServletRequestMimic;
public void testCheckBatchExecutionSchedule() throws Exception
{
HttpServletRequestMimic request = new HttpServletRequestMimic();
// Configure the request as necessary...
// e.g. request.getMimicState().getRequestParameters().set("name", "value");
assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
}
为了配置请求,HttpServletRequestMimic有一个getMimicState()方法,它返回一个HttpServletRequestState,通过它可以配置请求的所有相关细节(通过它可以访问任何相关的ServletContext,HttpSession等,并在必要时类似地配置它们) )。 HttpServletRequestState的文档包括summary的属性和方法以及完全详细的Javadoc。
请注意:
ObMimic还为HttpServletResponse,ServletContext,HttpSession,ServletConfig等提供类似的“模仿”类。
ObMimic的免费“社区版”可从网站的download页面获取。
您需要为项目添加的唯一库是ObMimic的/lib/obmimic.jar(假设Servlet API本身已存在)。
ObMimic网站提供完整的文档,包括Getting Started指南,一组带有示例代码的How To指南,详细Javadoc等。
答案 4 :(得分:-2)
通过使用tomcat提供的API,您可以获得HttpServletRequest对象
HttpServletRequest request = (HttpServletRequest)org.apache.catalina.core.ApplicationFilterChain.getLastServicedRequest();
这会将最后一个请求传递给servlet,以便从当前线程进行维护。
这项工作仅限于Tomcats“Strict Servlet Compliance”模式。要启用它,请添加以下JVM参数:
org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true