Sie können nicht so testen. Was Sie hier
Response response = Response.status(Response.Status.OK)
.entity(entity)
.type(MediaType.APPLICATION_JSON).build();
tun, ist eine Outbound Antwort zu bauen. Nachdem wir im JAX-RS-Rahmen eine Antwort gesendet haben, z.
@GET
@Produced(MediaType.APPLICATION_JSON)
public Response getResponse() {
...
return Response.status(Response.Status.OK)
.entity(entity)
.type(MediaType.APPLICATION_JSON).build();
}
es muss noch eine MessageBodyWriter
für die Serialisierung zu JSON durch.
aber sagen, dass hat Jersey ein Test Framework, können wir unsere Ressourcen Methoden zu testen. Sie können alle offiziellen Beispiele at the Github
Eine Probe (mit einigen Änderungen) finden:
Diese Mindest sind erforderlich Maven Abhängigkeiten
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.test-framework</groupId>
<artifactId>jersey-test-framework-core</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.13</version>
</dependency>
</dependencies>
Prüfklasse
public class TestJSONResource extends JerseyTest {
@Override
protected TestContainerFactory getTestContainerFactory() {
return new GrizzlyTestContainerFactory();
}
@Path("test")
public static class TestResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getJson() {
Map<String, String> entity = Maps.newHashMap();
entity.put("foo", "bar");
Response response = Response.status(Response.Status.OK)
.entity(entity)
.type(MediaType.APPLICATION_JSON).build();
return response;
}
}
@Override
protected DeploymentContext configureDeployment() {
return DeploymentContext.builder(new ResourceConfig(TestResource.class))
.contextPath("context1/context2")
.build();
}
@Test
public void testGet() {
final WebTarget target = target("test");
final String s = target.request().get(String.class);
System.out.println(s);
}
}
jersey-media-json-jackson
bietet die MessageBodyWriter
und MessageBodyReader
für r die Verarbeitung von JSON, das implizit für uns registriert ist.
Danke, grizzly2 Anbieter Rückkehr Standard '{ "foo": "bar"}' statt meiner '{foo: "bar"}' – MariuszS
Ok, mit 2.6 in diesem Bericht InternalServerErrorException ... – MariuszS
Jersey 2.6 Beispiel Mein Code gewonnen nicht mal kompilieren. Wenn Sie weitere Hilfe benötigen, müssen Sie weitere Informationen in Ihren Beitrag aufnehmen, damit wir Ihnen helfen können, d. H. Ein vollständiges Beispiel (mit Abhängigkeiten), das das Problem verursacht. 'InternalServerErrorException' Serverfehler könnte irgendetwas bedeuten –