2

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

我不知道该怎么做。有什么想法或提示吗?

4

2 回答 2

3

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

如果您只想测试 POJO 是否正确映射,并且您使用 Jackson 作为 JSON 提供程序,则可以简单地使用ObjectMapper反序列化 JSON。这就是Dropwizard 建议测试模型的方式

final ObjectMapper mapper = new ObjectMapper();
POJO pojo = mapper.readValue(jsonString, POJO.class);
// assertions
于 2017-08-14T12:28:43.047 回答
2

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

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

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

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

于 2017-08-14T08:34:04.980 回答