使用 JUnit 和 Jersey Client 测试 JAX-RS 应用程序
Using JUnit and Jersey Client for testing a JAX-RS application
我在 WildFly 10 上有一个 JavaEE 应用程序 运行ning。此应用程序使用 Jersey,当我使用 REST 客户端对其进行测试时 运行ning 正常。
我编写了一个 JUnit 测试,它使用 Jersey Client API 向上述应用程序发出请求。当我 运行 它时,我得到以下信息:
javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:209)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:174)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:473)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.get(ClientInvocationBuilder.java:165)
跟踪中的下一行引用下面的 request()
调用:
@Test
public void test() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/myapp/webapi");
target.path("/users");
String response = target.request("application/json").get(String.class);
assertEquals("test", response);
}
有什么想法吗?
你的问题来自服务器端(见错误500),如果你想自己检查,打开浏览器并转到url:http://localhost:8080/myapp/webapi
另请注意 Javadoc WebTarget.path() returns 一个新的 WebTarget
https://jersey.java.net/apidocs/2.22/jersey/javax/ws/rs/client/WebTarget.html#path(java.lang.String)
我相信你的代码你真正想做的是:
@Test
public void test() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/myapp/webapi");
WebTarget targetUpdated = target.path("/users");
String response = targetUpdated.request("application/json").get(String.class);
assertEquals("test", response);
}
我在 WildFly 10 上有一个 JavaEE 应用程序 运行ning。此应用程序使用 Jersey,当我使用 REST 客户端对其进行测试时 运行ning 正常。
我编写了一个 JUnit 测试,它使用 Jersey Client API 向上述应用程序发出请求。当我 运行 它时,我得到以下信息:
javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:209)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:174)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:473)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.get(ClientInvocationBuilder.java:165)
跟踪中的下一行引用下面的 request()
调用:
@Test
public void test() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/myapp/webapi");
target.path("/users");
String response = target.request("application/json").get(String.class);
assertEquals("test", response);
}
有什么想法吗?
你的问题来自服务器端(见错误500),如果你想自己检查,打开浏览器并转到url:http://localhost:8080/myapp/webapi
另请注意 Javadoc WebTarget.path() returns 一个新的 WebTarget
https://jersey.java.net/apidocs/2.22/jersey/javax/ws/rs/client/WebTarget.html#path(java.lang.String)
我相信你的代码你真正想做的是:
@Test
public void test() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/myapp/webapi");
WebTarget targetUpdated = target.path("/users");
String response = targetUpdated.request("application/json").get(String.class);
assertEquals("test", response);
}