2017-08-14 348 views
2

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

我不知道该怎么做。任何想法或提示?

回答

3

我想写测试,以确保实体被正确地映射到POJO

如果你要测试的是,POJO映射是否正确,并且您使用杰克逊作为JSON提供者,您可以简单地使用ObjectMapper来反序列化JSON。这就是如何Dropwizard recommends testing models

final ObjectMapper mapper = new ObjectMapper(); 
POJO pojo = mapper.readValue(jsonString, POJO.class); 
// assertions 
+0

那很简单吧。谢谢你,先生。 – user1682170

2

测试编组是jax-rs服务中那些不容易用普通的junit测试进行测试的事情之一。例如,您如何确保您没有忘记注释@Path@QueryParam,以便您的junit测试调用方法成功,但实际调用服务失败。

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

如果您使用的是jersey jax-rs堆栈,则可以使用JerseyTest

Arquillian更完整,因为它支持使用多个容器进行测试(甚至是硒支持),并且不会将您与jax-rs实现捆绑在一起。

+0

请注意,我只想测试我们构建消费我们的API的客户端。这些客户端与API分离 - 所以我只想以某种方式提供API的预期响应,并声明我的客户端按预期处理它。所以是的 - 我希望如果可能的话,用普通的junit测试来做。 – user1682170