我有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)
为什么会发生这种情况?
答案 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用于球衣测试框架。