0

我选择了 Jersey 测试框架来实现 REST 服务的单元测试用例。但是一旦我运行测试,我就会遇到以下问题。

注意:我什至将其添加resteasy-jackson-provider到 pom 文件中,但无济于事。

这是.pom文件依赖项

<!-- jersey security dependency  -->
            <dependency>
                <groupId>org.glassfish.jersey.containers</groupId>
                <artifactId>jersey-container-servlet-core</artifactId>
                <version>${jersey.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.media</groupId>
                <artifactId>jersey-media-multipart</artifactId>
                <version>${jersey.version}</version>
            </dependency> 

            <dependency>
              <groupId>org.glassfish.jersey.media</groupId>
              <artifactId>jersey-media-json-jackson</artifactId>
               <version>${jersey.version}</version>
            </dependency>
            <!-- jersey test framework dependency  -->

         <dependency>

          <groupId>org.glassfish.jersey.test-framework.providers</groupId>
          <artifactId>jersey-test-framework-provider-jetty</artifactId>
          <version>${jersey.version}</version>
          <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jackson-provider</artifactId>
          <version>2.3.4.Final</version>
       </dependency>

        <!--junit Dependency-->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>

模拟服务.Java

@Path("/hello")
public class MockServices {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/world")
    public DateVO getHello() {
        DateVO j=new DateVO ();
        j.setActive(true);
        return j;
    }
}

模拟服务测试.Java

    public class MockServicesTest extends JerseyTest {




        @Override
        protected Application configure() { 
            return new ResourceConfig(MockServices.class);
        }



        @Test
        public void test() {
            Response hello = target("/hello/world").request().get();
            System.out.println(hello.readEntity(String.class));//throw an above exception
        }

}

请让我知道我该如何克服这个问题。

4

2 回答 2

0

我必须明确地使用 Jersey 客户端实现来调用 REST 端点。

@Test
 public void test() {
    final Client client = new JerseyClientBuilder().build();
    WebTarget target = client.target("http://localhost:9998");
    final Response response = 
    target.path("/hello/world").request().get();
    final String json = response.readEntity(String.class);

}

参考

于 2017-04-19T05:45:15.393 回答
0

像这样覆盖您的提供程序方法

@Override
    protected Application configure() { 
       ResourceConfig config =new ResourceConfig(MockServices.class).register(JacksonFeature.class).register("Your ContextResolver<ObjectMapper> implementation class");
 return config;
    }
于 2017-04-18T13:23:31.073 回答