为servlet编写JUNIT?

时间:2011-10-01 12:31:10

标签: java unit-testing servlets junit

我正在使用glassfish应用程序服务器。我需要编写一些servlet的junits。我的问题是如何使用核心java库创建模拟容器,模拟请求和响应,或者我需要在这里使用某种工具?任何指针都会有帮助吗?

3 个答案:

答案 0 :(得分:4)

正如hvgotcodes所说,完全有可能为servlet编写JUnit测试。但是我建议你在这之前仔细考虑。

Servlet是HTTP请求侦听器;它们在servlet容器中运行,响应任何HTTP请求,并将结果打包发送回来。在我看来,这就是他们应该做的一切。真正的工作最好留给servlet可以编组的其他对象。这些可能是POJO,很可能是基于接口的,这意味着更容易测试而无需启动servlet容器来运行测试。如果您确定在非基于Web的设置中需要相同的功能,则很容易做到,因为它已经驻留在servlet以外的对象中。

我会重新考虑这个设计。在servlet中添加大量功能可能是一个糟糕的决定。

答案 1 :(得分:3)

1)将应用程序逻辑抽象为servlet调用的对象并不是一个坏主意,因此您可以将业务逻辑与servlet交互分开进行测试。

2)Spring提供了一些mock classes for tests,包括请求和响应。即使您不使用Spring,您仍然可以仅将这些类用于测试。

答案 2 :(得分:0)

你可能会发现JBoss的Arquillian很有意思 - http://community.jboss.org/wiki/Arquillian

  

在容器内测试!

     

Arquillian提供了一种简单的机制来测试远程或嵌入式容器中的应用程序代码,或者通过作为容器的客户端进行交互。

     

使命宣言

     

Arquillian项目的任务是提供一个简单的测试工具,开发人员可以使用它来为他们的Java应用程序(最有可能是企业应用程序)生成广泛的集成测试。测试用例可以在容器内执行,与被测代码一起部署,或者通过与容器协调,充当已部署代码的客户端。