尝试建立一个hello world jersey测试。 https://jersey.java.net/documentation/2.5.1/test-framework.html使它看起来如此简单,但是当按照文档记录覆盖配置方法时,它不起作用。
来自文档
package api;
import static org.junit.Assert.assertEquals;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
import org.junit.Test;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.core.ResourceConfig;
import com.sun.jersey.test.framework.JerseyTest;
import com.sun.jersey.test.framework.WebAppDescriptor;
public class JerseyTester extends JerseyTest {
@Path("hello")
public static class HelloResource {
@GET
public String getHello() {
return "Hello World!";
}
}
@Override
protected Application configure() {
return new ResourceConfig(HelloResource.class);
}
@Test
public void testHelloWorld() {
WebResource webResource = resource();
String responseMsg = webResource.path("helloworld").get(String.class);
assertEquals("Hello World", responseMsg);
}
}
问题是配置方法覆盖不起作用 - 我收到错误:"返回类型与JerseyTest.configure()"不兼容。我也得到错误:"无法实例化类型ResourceConfig" - 当文档明确说明实例化它时,怎么可能呢?!
这是如此基本我不知道为什么它不起作用。我正试图让一个简单的jersey球衣端点接受测试。
这是我的依赖:
dependencies {
compile 'javax.ws.rs:jsr311-api:1.1.1'
compile 'com.sun.jersey:jersey-server:1.19'
compile 'com.sun.jersey:jersey-core:1.19'
compile 'com.sun.jersey:jersey-client:1.19'
compile 'com.sun.jersey:jersey-servlet:1.19'
compile 'com.sun.jersey:jersey-json:1.19'
compile 'com.yammer.metrics:metrics-core:2.2.0'
compile 'com.yammer.metrics:metrics-servlet:2.2.0'
compile 'com.yammer.metrics:metrics-jersey:2.2.0'
compile 'com.yammer.metrics:metrics-graphite:2.2.0'
compile 'log4j:log4j:1.2.16'
testCompile 'junit:junit-dep:4.10'
testCompile 'com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly2:1.19'
testCompile 'org.slf4j:slf4j-simple:1.6.1'
}
答案 0 :(得分:0)
是的,您正在查看错误的文档。您正在查看的文档适用于Jersey 2.x.但是你正在使用Jersey 1.x.您可以查看1.x的文档,但那里没有太多内容。最好的办法是查看source code tests的示例。您还可以在this answer
的底部看到另一个示例