【问题标题】:Unit testing JSPs in embedded mode以嵌入式模式对 JSP 进行单元测试
【发布时间】:2011-02-15 17:18:23
【问题描述】:

我正在构建一个对 JSP 进行单元测试的小型框架。这些 JSP 有一些自定义标签,否则没有什么特别的。

尽管有许多可用的 Java 单元测试解决方案,但我不喜欢使用启动单独的完整 JSP 容器、部署应用程序并通过 TCP 连接收集结果的方法。这种情况的典型示例是 Apache Cactus、Selenium 等。理想情况下,我想要一个尽可能轻量级的嵌入式解决方案(不需要网络连接是一个好兆头)。我还查看了各种模拟框架,但在单元测试期间编译/执行 JSP 时,没有一个干净的工作示例。

我能找到的最接近的解决方案是在嵌入式模式下使用 Jetty,或者特别是它的 ServletTester 类,如 http://docs.codehaus.org/display/JETTY/ServletTester 中所述

不幸的是,上述方法仅适用于 servlet,但没有提及 JSP。我认为有一种方法可以以编程方式将 Jasper servlet 挂接到其中,但不能为了让两者集成而花一周时间深入研究 Jetty/Jasper 内部结构。我不介意使用任何其他 JSP/Servlet 容器,只要它是免费且可灵活配置的。

如果有人有类似的设置并愿意分享经验,我将不胜感激。

【问题讨论】:

    标签: java unit-testing jsp tomcat jetty


    【解决方案1】:

    这是一个使用 jsps 运行 Jettys ServletTester 的示例项目。

    https://github.com/genthaler/jetty-jsp-unit-test-simple/

    【讨论】:

      【解决方案2】:

      看看 HttpUnit - http://httpunit.sourceforge.net/。它与 ServletUnit 捆绑在一起,这是一个处理 JSP 的内存 servlet 引擎。这通常应该只用于测试正确分解的 MVC 应用程序的视图部分或进行一些集成/验收测试。

      应直接从 POJO 测试业务逻辑。

      【讨论】:

      • 感谢您的回答。在我的研究过程中,我显然看过 HttpUnit/ServletUnit,但是我找不到任何关于它们如何运行 JSP 的清晰文档。引用他们的常见问题解答:“因此,您将需要在您的类路径中使用 Jasper jar,以及它所依赖的任何内容”。换句话说,这并不比 Jetty 提供的 ServletTester 示例好。如果我错了,请告诉我。
      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2011-07-23
      • 2020-12-07
      • 1970-01-01
      相关资源
      最近更新 更多