I have some problems with the jersey test framework. If i use the @Before and @After annotations, then the target method throws a NullPointerException. I thought JerseyTest works with JUnit? Where is my problem?
Code that fails:
public class MyResourceTest extends JerseyTest {
@Before
public void setUp() { }
@After
public void tearDown() { }
@Override
protected Application configure() {
return new ResourceConfig(MyResource.class);
}
@Test
public void SHOULD_RETURN_BAD_REQUEST() throws IOException {
System.out.println(target("myPath"));
assertEquals(1, 1);
}
}
Result:
java.lang.NullPointerException at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:566) at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:580) at foo.bar.MyResourceTest.SHOULD_RETURN_BAD_REQUEST(MyResourceTest.java:43)
Code that works:
public class MyResourceTest extends JerseyTest {
@Override
protected Application configure() {
return new ResourceConfig(MyResource.class);
}
@Test
public void SHOULD_RETURN_BAD_REQUEST() throws IOException {
System.out.println(target("myPath"));
assertEquals(1, 1);
}
}
Result:
JerseyWebTarget { http://localhost:9998/myPath }
Your methods seem to override some important initialization made in parent JerseyTest
. Try to name them differently. Eg:
@Before
public void setUpChild() { }
@After
public void tearDownChild() { }
I came here because I was using JUnit 5 and it seems that it wasn't seeing the @Before and @After annotations on the JerseyTest setup/tearDown methods. I had to override them and use the new JUnit 5 annotations
public class MyResourceTest extends JerseyTest {
@BeforeEach
@Override
public void setUp() throws Exception {
super.setUp();
}
@AfterEach
@Override
public void tearDown() throws Exception {
super.tearDown();
}
@Override
protected Application configure() {
return new ResourceConfig(MyResource.class);
}
@Test
public void SHOULD_RETURN_BAD_REQUEST() throws IOException {
System.out.println(target("myPath"));
assertEquals(1, 1);
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.