作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 httpunit ServletRunner 进行 servlet 测试。现在我想测试使用请求属性(而不是参数)的 servlet。属性由我的过滤器放入请求中。因此,为了使 servlet 正常工作,必须安装过滤器。
有什么方法可以给 ServletRunner 添加过滤器吗?
最佳答案
我不认为这是可以做到的。 HttpUnit 没有为 WebRequest 提供 setAttribute 方法,这是有道理的,因为属性只能在容器内设置。
但是,您可以(甚至可能应该)做的是在单独的测试中分别测试两者——过滤器将参数放入请求中,如果参数设置正确,servlet 会工作。这样做的方法是为 servlet 创建一个模拟请求,为其设置属性,并为其运行常规单元测试。同样的方法适用于过滤器。
这是一个使用过滤器的例子:
@Test
public void testDefaultRequestEncoding() throws ServletException, IOException {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding(CONFIGURED_ENCODING_UTF8);
filter.setForceEncoding(ENFORCE_ENCODING_TRUE);
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new MockFilterChain();
request.setCharacterEncoding(TEST_ENCODING_ISO_8859_15);
filter.doFilter(request, response, filterChain);
assertEquals(CONFIGURED_ENCODING_UTF8, request.getCharacterEncoding());
assertEquals(CONFIGURED_ENCODING_UTF8, response.getCharacterEncoding());
}
Mock* 对象来自 Spring。如果您的框架没有它们,您可以使用一些模拟库来创建它们,或者使用可以从 Spring 源代码中看到的那些。
关于unit-testing - 我可以将用于测试的过滤器附加到 httpunit ServletRunner 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014960/
我正在使用 httpunit ServletRunner 进行 servlet 测试。现在我想测试使用请求属性(而不是参数)的 servlet。属性由我的过滤器放入请求中。因此,为了使 servlet
我是一名优秀的程序员,十分优秀!