Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Junit 在运动衫测试下为灰熊启用gzip压缩_Junit_Gzip_Jersey_Grizzly - Fatal编程技术网

Junit 在运动衫测试下为灰熊启用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

我已经实现了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 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"));
    }
}