在泽西测试框架中无法找到具有内容类型应用程序/JSON的消息实体读取器



我已经选择了泽西测试框架来实现休息服务的单元测试案例。

注意:我什至将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>

MOCKSEVICES.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;
    }
}

MockServIcestest.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
        }

}

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

覆盖您的提供商方法

@Override
    protected Application configure() { 
       ResourceConfig config =new ResourceConfig(MockServices.class).register(JacksonFeature.class).register("Your ContextResolver<ObjectMapper> implementation class");
 return config;
    }

我必须使用明确的球衣客户端实现来调用休息点。

@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);
}

参考

最新更新