我们使用javax.ws.rs.core.Response.readEntity(Class type(将JSON响应解析为POJO。我想编写测试以确保实体正确映射到 POJO 中 - 因此,如果布尔值"valid"在 json 中为真,则在 POJO 中也是如此 - 反之亦然。
我不知道该怎么做。有什么想法或提示吗?
我想编写测试以确保实体正确映射到 POJO 中
如果您只想测试POJO是否正确映射,并且您使用Jackson作为JSON提供程序,则可以简单地使用该ObjectMapper
来反序列化JSON。这就是Dropwizard建议测试模型的方式
final ObjectMapper mapper = new ObjectMapper();
POJO pojo = mapper.readValue(jsonString, POJO.class);
// assertions
测试编组是 jax-rs 服务中不容易用普通 junit 测试的事情之一。例如,如何确保不会忘记注释@Path
或@QueryParam
,以便调用该方法的 junit 测试成功,但实际上调用服务失败。
Arquillian为这些测试提供了解决方案。从本质上讲,Arquillian可以在正在运行的javaee容器中执行测试。测试设置包括构建战争和部署应用程序。这样,您可以测试堆栈的所有元素,并确保所有元素都在一起:编组、请求路由、http 过滤器,...
如果您使用的是 jersey jax-rs 堆栈,则可以使用 JerseyTest。
Arquillian更完整,因为它支持使用多个容器进行测试(甚至支持硒(,并且不会将您与jax-rs实现绑定。