Ami*_*hum 4 java junit jsp unit-testing servlets
我有一个叫做的servlet Calculator
.它读取参数left
,right
并op
通过result
在响应中设置属性来返回.
单元测试的最简单方法是什么:基本上我想创建一个HttpServletRequest,设置参数,然后检查响应 - 但我该怎么做?
这是servlet代码(它的目的很小而且很愚蠢):
public class Calculator extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public Calculator() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Integer left = Integer.valueOf(request.getParameter("left"));
Integer right = Integer.valueOf(request.getParameter("right"));
Integer result = 0;
String op = request.getParameter("operator");
if ("add".equals(op)) result = this.opAdd(left, right);
if ("subtract".equals(op)) result = this.opSub(left, right);
if ("multiply".equals(op)) result = this.opMul(left, right);
if ("power".equals(op)) result = this.opPow(left, right);
if ("divide".equals(op)) result = this.opDiv(left, right);
if ("modulo".equals(op)) result = this.opMod(left, right);
request.setAttribute("result", result); // It'll be available as ${sum}.
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
...
Run Code Online (Sandbox Code Playgroud)
}
eri*_*son 12
通常,程序的重要逻辑被分解为可在各种上下文中使用的其他类,而不是紧密耦合到Servlet引擎.这使servlet本身成为Web和应用程序之间的简单适配器.
这使程序更容易测试,并且更容易在桌面或移动应用程序等其他环境中重用.
小智 10
你可以使用几个库.您在应用程序中使用Spring http://www.springsource.org/吗?如果是这样,有一个包含MockHttpServletRequest的spring(spring-test)应用程序.例如:
@Test
public void shouldReturnAValidaRedirectionMessage() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("op", "addition");
request.addParameter("left", "1");
request.addParameter("right", "5");
CalculatorServlet servlet = new CalculatorServlet();
Operation operation = servlet.getOperation(request);
assertNotNull(operation);
assertEquals(ADDITION, operation.getOperationType());
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14253 次 |
最近记录: |