【发布时间】:2017-09-05 19:46:54
【问题描述】:
我正在为过滤器编写一个单元测试来记录请求和响应消息。我们是否可以创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟来作为 doFilter() 方法的输入发送。
【问题讨论】:
标签: java unit-testing servlets servlet-filters
我正在为过滤器编写一个单元测试来记录请求和响应消息。我们是否可以创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟来作为 doFilter() 方法的输入发送。
【问题讨论】:
标签: java unit-testing servlets servlet-filters
当然,只需实现接口即可。但是,这些都是大型接口,因此需要维护大量代码而不是模拟。
如果您不使用模拟的原因是对模拟的简单反感(很好!)请注意,手动实现“模拟”对象和让框架为您完成实际上没有区别;在这两种情况下,您都在为您的代码提供与您最终使用的网络框架不同的东西。
您正在编写的代码可能通过集成测试得到更好的测试 - 启动一个真正的 Web 服务器作为您的测试工具的一部分并生成真正的 HTTP 请求。
如果您正在尝试通过手动实现接口来解决模拟为您创建的问题,这里是一个自定义 HttpServletRequest 的示例,该示例被实现为 Jetty 附带的实现的扩展:
【讨论】: