Jersey Test Framework给出了空指针Exception

时间:2014-08-02 18:11:35

标签: java rest jersey

我有Jersey Rest资源,我想使用Jersey Test Framework创建集成测试。我决定从这里(https://jersey.java.net/documentation/latest/test-framework.html)遵循指南,所以我创建了以下集成测试

public class MyResourceIT extends JerseyTest {

public MyResourceIT() {
}

@Path("hello")
public static class HelloResource {
    @GET
    public String getHello() {
        return "Hello World!";
    }
}

@Override
protected Application configure() {
    System.out.println("Configure was executed");
    return new ResourceConfig(HelloResource.class);
}

@Test
public void testGetIt() {
    System.out.println("getIt");
    final String hello = target("hello").request().get(String.class);
    assertEquals("Hello World!", hello);
}
}

作为一个容器,我使用了Jetty,但问题是当我运行测试时出现以下错误:

-------------------------------------------------------------------------------
Test set: com.example.jerseywebapp.MyResourceIT
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.305 sec <<< FAILURE! - in com.example.jerseywebapp.MyResourceIT
testGetIt(com.example.jerseywebapp.MyResourceIT)  Time elapsed: 0.169 sec  <<< ERROR!
java.lang.NullPointerException: null
    at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:566)
    at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:580)
    at com.example.jerseywebapp.MyResourceIT.testGetIt(MyResourceIT.java:68)

为什么会发生这种情况?

3 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,但就我而言,它的发生是因为我的测试类覆盖了setUp()方法,该方法由JerseyTest类用来初始化其上下文。

答案 1 :(得分:0)

我添加了以下依赖项并运行测试。有用。你尝试过这种依赖吗?

<dependency>
   <groupId>org.glassfish.jersey.test-framework.providers</groupId>
   <artifactId>jersey-test-framework-provider-jetty</artifactId>
   <version>2.11</version>
</dependency>

答案 2 :(得分:0)

我终于解决了它,问题在于我使用了maven 1.x用于其他一切而maven 2.x用于球衣测试框架。