Junit 在运动衫测试下为灰熊启用gzip压缩
我已经实现了web服务。根据要求的响应必须是gzip-ed 客户端包含以下用于切换gzip的引导代码:Junit 在运动衫测试下为灰熊启用gzip压缩,junit,gzip,jersey,grizzly,Junit,Gzip,Jersey,Grizzly,我已经实现了web服务。根据要求的响应必须是gzip-ed 客户端包含以下用于切换gzip的引导代码: Client retval = Client.create(); retval.addFilter( new com.sun.jersey.api.client.filter.GZIPContentEncodingFilter()); 对于Tomcat web.xml,gzip的配置如下 <servlet> <display-name>JAX-RS RE
Client retval = Client.create();
retval.addFilter(
new com.sun.jersey.api.client.filter.GZIPContentEncodingFilter());
对于Tomcat web.xml,gzip的配置如下
<servlet>
<display-name>JAX-RS REST Servlet</display-name>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
</init-param>
JAX-RSRESTservlet
JAX-RSRESTservlet
com.sun.jersey.spi.container.servlet.ServletContainer
1.
com.sun.jersey.spi.container.ContainerRequestFilters
com.sun.jersey.api.container.filter.gzip内容加密过滤器
com.sun.jersey.spi.container.ContainerResponseFilters
com.sun.jersey.api.container.filter.gzip内容加密过滤器
一切都很好
但我需要编写调用我的服务的单元测试。我使用JerseyTest作为基础,实践证明grizzly在没有显式声明的情况下无法正确处理gzip。我已经找到了如何打开它的代码片段,但我不知道如何将它与JerseyTest结合起来
提前感谢您如果您正在使用jersey测试框架,下面是一个示例测试用例:
@Test
public void testGet(){
WebResource webResource = resource();
ClientResponse result = webResource
.path("pathToResource")
.header("Accept-Encoding", "gzip")
.head();
assertEquals(
"response header must contain gzip encoding",
"[gzip]",
result.getHeaders().get("Content-Encoding").toString());
}
如果您正在使用jersey测试框架,下面是一个示例测试用例:
@Test
public void testGet(){
WebResource webResource = resource();
ClientResponse result = webResource
.path("pathToResource")
.header("Accept-Encoding", "gzip")
.head();
assertEquals(
"response header must contain gzip encoding",
"[gzip]",
result.getHeaders().get("Content-Encoding").toString());
}
随着当前Jersey版本中客户端API的更改,这是一个适用于Jersey 2.6的示例测试:
public class WebServicesCompressionTest extends JerseyTest {
@Path("/")
public static class HelloResource {
@GET
public String getHello() {
return "Hello World!";
}
}
@Override
protected Application configure() {
enable(TestProperties.LOG_TRAFFIC);
return new ResourceConfig(
HelloResource.class,
EncodingFilter.class,
GZipEncoder.class,
DeflateEncoder.class
);
}
@Test
public void testGzip() {
Response response = target().request().acceptEncoding("gzip").get(Response.class);
assertThat(response.getStatus(), is(200));
assertThat(response.getHeaderString("Content-encoding"), is("gzip"));
}
}
随着当前Jersey版本中客户端API的更改,这是一个适用于Jersey 2.6的示例测试:
public class WebServicesCompressionTest extends JerseyTest {
@Path("/")
public static class HelloResource {
@GET
public String getHello() {
return "Hello World!";
}
}
@Override
protected Application configure() {
enable(TestProperties.LOG_TRAFFIC);
return new ResourceConfig(
HelloResource.class,
EncodingFilter.class,
GZipEncoder.class,
DeflateEncoder.class
);
}
@Test
public void testGzip() {
Response response = target().request().acceptEncoding("gzip").get(Response.class);
assertThat(response.getStatus(), is(200));
assertThat(response.getHeaderString("Content-encoding"), is("gzip"));
}
}