0

我们必须用 jUnit 测试我们的 JavaEEServer。出于这个原因,我们想要测试我们的 REST 获取方法。我们使用 Jersey 框架实现了这些方法。因此,这些方法返回类型为 java.ws.rs.core.Response 的响应。

当我们想从服务器端对其进行测试时,我们如何将这些响应转换为 JSON,因此只想直接调用方法?

例子:

@GET
@Path("getallemployees")
@Produces("application/json")
public Response getAllEmployees() {
    //here we create a generic entity (this works)
    return Response.ok(entity).build();
}

我们需要的测试:

@Test
public void testgetAllEmployees() {
    // here we initialize the mocked database content (Mockito)
    Response test = employeeResource.getAllEmployees();
    // here we want to have the Response as JSON
}

谢谢!

4

1 回答 1

0

看起来您正在尝试混合单元测试和集成测试,而您应该选择其中之一。

如果你对特定的资源实现感兴趣,你应该使用单元测试,因此不要关心 JSON 输出。只需模拟资源依赖关系,调用getAllEmployees()并确认期望。

但是,如果您对服务输出感兴趣,那么您可能应该启动集成系统(可能使用Jetty作为独立容器,如果需要,还可以使用内存数据库)并使用Jersey Client测试响应:

Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target("http://example.com/rest").path("getallemployees");
String rawResponseBody = webTarget.request(MediaType.APPLICATION_JSON).get(String.class);

根据我的经验,很少使用原始响应。您可能会使用实体类而不是String.

于 2013-07-13T15:45:37.810 回答