如何使用JUnit测试Servlets?

8
我看到Jetty有一个ServletTest类,你可以用它来测试Servlets。
tester = new ServletTester();
tester.setContextPath("/");
tester.addServlet(TestServlet.class, "/servlet/*");
... 
tester.start();

您知道Tomcat中是否有类似的功能吗?我该如何测试一个servlet?

对于单元测试来说,使用哪个Servlet容器并不重要。这类似于在数据库访问代码的单元测试中使用HSQL而不是Oracle。因此,即使您为Tomcat部署编写代码,如果Jetty更适合进行单元测试(启动更快,配置更容易等),您也可以选择Jetty。 - Thilo
3个回答

9

HttpUnit有一个名为ServletUnit的“模拟容器”,详情请参考ServletUnit介绍


6

3
请注意,自2011年8月5日起,Jakarta Cactus已被弃用。 :( - Piko

2
我从未发现直接测试servlet(或Struts操作)的好处,尤其是考虑到需要进行的工作。我的大多数servlet/actions/其他使用POJO来完成大部分工作,而这些POJO经过了大量测试。Web应用程序本身具有一套HtmlUnit测试套件。我认为中间的所有内容都只是管道。我甚至不相信我曾经遇到过只有通过直接测试servlet类才能捕获的任何类型的错误,而这种错误不会被POJO或Web应用程序测试所捕获。

2
明白你的意思。然而在我的情况下,我继承了一个非常复杂和有缺陷的垃圾Servlet。能够从单元测试中调用它来针对特定失败场景进行测试将大大缩短我的调试过程。 :) - Piko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接