如何测试javax Response.readEntity(Class <t>类型)?

时间:2017-08-14 06:57:25

标签: java jax-rs javax.ws.rs

我们使用javax.ws.rs.core.Response.readEntity(类类型)将JSON响应解析为POJO。我想编写测试以确保实体正确映射到POJO - 所以如果在json中布尔“有效”为真,则在POJO中也是如此 - 反之亦然。

我无法弄明白该怎么做。任何想法或提示?

2 个答案:

答案 0 :(得分:3)

  

我想编写测试以确保实体正确映射到POJO

如果要测试的是POJO是否正确映射,并且您使用Jackson作为JSON提供程序,则只需使用ObjectMapper反序列化JSON即可。这就是Dropwizard recommends testing models

的方式
final ObjectMapper mapper = new ObjectMapper();
POJO pojo = mapper.readValue(jsonString, POJO.class);
// assertions

答案 1 :(得分:2)

测试编组是jax-rs服务中的一个,用简单的junit测试不容易测试。例如,如何确保不会忘记注释@Path@QueryParam,以便调用方法的junit测试成功,但实际调用服务失败。

Arquillian为这些测试提供了解决方案。从本质上讲,Arquillian允许在正在运行的javaee容器中执行测试。测试设置包括构建战争和部署应用程序。这样,您可以测试堆栈的所有元素,并确保所有元素组合在一起:编组,请求路由,http过滤器,......

如果您使用的是泽西jax-rs堆栈,您也可以使用JerseyTest

Arquillian更完整,因为它可以使用多个容器(甚至是selenium支持)进行测试,并且不会使用jax-rs实现。