你如何为你的Java Servlet编写单元测试?

6

如何对Java Servlet进行单元测试?顺便说一下,这是一个让我有些困难的话题:你是如何对Java Servlet进行单元测试的呢?


请注意这个相似的问题: https://dev59.com/oHVD5IYBdhLWcg3wNIvc - Yuval F
3个回答

17

最重要的是尝试从servlet中提取所有与servlet行为无直接关系的内容。

这样做可以使核心功能的测试更加容易。通过这样做,您立即拥有一组不依赖于容器且可测试的组件(除了使它们更具可重用性之外,还避免了运行和接口到容器的痛苦)。应该考虑架构和适当的组件分层 - 例如,返回对象结构而不是可显示片段的组件,不直接使用HttpRequests而是使用某些请求编组结构等。

大多数测试(取决于系统结构和复杂性)可以正常进行测试。可以使用(例如)Apache Cactus构建额外的以servlet为重点的测试来进行功能的完整性检查。此外,您可能希望调查诸如Selenium之类的基于浏览器的解决方案。

(注意:此方法适用于大多数GUI环境 - 例如Swing)


2011/08/05 - Jakarta Cactus已经被淘汰。 - Raedwald

2

今天刚刚有一个几乎相同的问题被问到了,链接在这里

Jakarta cactus是一个用于servlet的单元测试框架。


很高兴了解到这个Jakarta Cactus项目。但我也想知道最佳实践是什么。感谢您的提示! - Kico Lobo
2011/08/05 - Jakarta Cactus已经被废弃。 - Raedwald

2

我们通常做的是使用模拟请求和响应来加载servlet。如果您正在使用Spring,则特别容易,因为它实际上提供了MockHttpRequest和MockHttpResponse。

假设您在应用程序中有清晰定义的层次结构,那么其余部分就很容易了。底层的服务/DAO层可以被替换为模拟对象,因此我们只需确保servlet根据给定的请求对象执行其所需的操作,并正确编写响应即可。


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