【问题标题】:Testing my java servlet with Junit? [duplicate]用 Junit 测试我的 java servlet? [复制]
【发布时间】:2015-07-12 21:03:48
【问题描述】:

我使用 java servlet 创建了一个简单的计算器,并被告知要使用 JUNIT 对其进行测试。

如何使用 http 响应等测试 servlet,有人可以给我一个测试示例吗?

这是我的代码示例,参数由html中的表单提交;

package NipenderSoft;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LaskuriServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter temp = response.getWriter();
    }

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);

            int luku01= Integer.parseInt(request.getParameter("luku01"));
            int luku02= Integer.parseInt(request.getParameter("luku02"));
            int ans = 0;

            if(request.getParameter("toiminto").equals("plus"))
            {
                ans = luku01+luku02;
            }
            if(request.getParameter("toiminto").equals("miinus"))
            {
               ans = luku01-luku02;
            }
            if(request.getParameter("toiminto").equals("kerto"))
            {
               ans = luku01*luku02;
            }if(request.getParameter("toiminto").equals("jako"))
            {
               ans = luku01/luku02;
            }

            response.getWriter().println(ans); 
        }

【问题讨论】:

    标签: java unit-testing servlets junit


    【解决方案1】:

    由于 HttpRequest 的实例是在运行时由 servlet 容器(如 tomcat 等)创建的。因此,要么您必须编写自己的逻辑来扩展 HttpRequest 并提供实现,但工作量很大。建议使用easymock之类的框架,请参阅How do I Unit Test HTTPServlet?

    仅供参考,如果您选择 struts 2,您可以设计独立于 HTTP 类的操作类,因此非常适合单元测试 POV。

    【讨论】:

      【解决方案2】:

      我认为这不是单元测试的好候选。线索是你必须运行一个 servlet 容器来测试它。

      这不是一个好的设计。您不应该将手动编码的 HTML 和样式信息从 servlet 中流出。

      无论这个类在做什么,更好的设计会将行为放在 POJO 中,您可以在不启动 servlet 容器的情况下进行练习。

      更现代的 UI 方法将使用 AJAX 调用将此 servlet 作为 REST 服务调用并动态更新 UI。 UI 将由 HTML5、CSS3 和 JavaScript 组成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多