在嵌入模式下对JSP进行单元测试

时间:2009-05-06 20:30:05

标签: java unit-testing jsp tomcat jetty

我正在构建一个对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容器,只要它是免费且灵活可配置的。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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