jsp - 单元测试 JSP 文件

标签 jsp unit-testing

我有一个 JSP 文件,其中包含根据从 servlet 接收的对象列表生成 HTML 的逻辑。在 servlet 的 doPost() 方法中,它设置此对象列表,然后将它们设置为 HttpServletRequest 属性,如下所示:request.setAttribute("objectList", objectList);。这是我拥有的 JSP 代码的相关部分:

<c:set var="endSelect" value="${false }" />
<c:forEach items="${objectList }" var="object">
  <c:choose>
    <c:when test="${object.getType().equals("selectObject") }">
      <c:if test="${!endSelect }">
        <select id="${object.getId() }-detail" name="${object.getName() }" >
      </c:if>
      <option name="${object.getName() }" value="${object.getValue() }">
        <c:out value="${object.getValue() }" />
      </option>
      <c:set var="endSelect" value="${true }" />
    </c:when>
    <c:otherwise>
      <label for="${object.getId() }">
        <c:out value="${child.getDecisionName() }" />
      </label>
      <input id="${object.getId() }" type="text" name="${object.getName() }" >
    </c:otherwise>
  </c:choose>
  <c:if test="${endSelect }">
    </select>
    <c:set var="endSelect" value="${false }" />
  </c:if>
</c:forEach>

正如您所看到的,根据对象类型,JSP 将为选择框或文本框生成 HTML。

以下是我想要测试的方法:我想设置一个单元测试文件,其中每个测试创建不同的对象(或模拟它们,以两者为准),将这些对象放入列表中,然后将该列表发送到我的 JSP 文件。然后我想验证从 JSP 生成的 HTML。

问题是我的 JSP 并非始终托管在服务器上。我不能直接去获取 URL。我不想仅仅为了测试而启动服务器并托管 JSP 页面。我想说,“嘿,这是一个假的 HttpServletRequest,其中设置了一些假属性。通过此 JSP 文件运行该请求并向我显示生成的 HTML,以便我可以确保在某些测试中存在 select 标记,而在其他测试中则没有,并且结束选择标签显示在它们应该出现的位置,存在正确数量的文本输入,等等......”

我研究过 Apache Cactus/Jakarta Cactus、JSoup、HttpUnit、Selenium、JUnit 和 Mockito,但所有这些都存在一个问题:要么需要已经托管 JSP,要么它们是“自动点击”解决方案,这不是我真正想要的。

最佳答案

您并不是真的想像这样测试 JSP;测试 JSP 本质上是一种集成测试,除非您竭尽全力从 Tomcat 等中提取 JSP 呈现引擎。

其他模板引擎不受此限制,例如 FreeMarker、Handlebars 等。

此外,您只需启动容器一次,然后针对它运行整套集成测试。

关于jsp - 单元测试 JSP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919875/

相关文章:

jsp - Servlet 处理多个 post 请求

javascript - 未定义不是函数: unit testing passport authentication custom callback

java - Sonar 中的单元测试执行时间非常长

angularjs - 如何在 Jasmine 中用 $promise.then 模拟 AngularJS $resource

unit-testing - 将 .eml 文件加载到 javax.mail.Messages

java - 通过 JSP 从数据库提供 PDF 文件

maven - 如何使用Maven创建JSP + Servlet + TOMCAT + MySQL

eclipse - eclipse中调试JSP时的外部jar配置

javascript - 在 JSP 或 Javascript 中清除浏览器缓存中的图像

java - 使用带注释的方法模拟类