JerseyTest和JUnit抛出NullPointerException

Dom*_*nic 12 java junit overriding junit4 jersey-2.0

我在球衣测试框架上遇到了一些问题.如果我使用@Before和@After注释,则target方法抛出NullPointerException.我认为JerseyTest适用于JUnit?我的问题在哪里?

  • 泽西岛:2.12
  • JUnit:4.11

代码失败:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

位于org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:566)的java.lang.NullPointerException,位于foo.bar.MyResourceTest的org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:580). SHOULD_RETURN_BAD_REQUEST(MyResourceTest.java:43)

有效的代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

JerseyWebTarget { http://localhost:9998/myPath }
Run Code Online (Sandbox Code Playgroud)

lub*_*nac 25

您的方法似乎覆盖了父进程中的一些重要初始化JerseyTest.尝试以不同的方式命名.例如:

@Before
public void setUpChild() { }

@After
public void tearDownChild() { }
Run Code Online (Sandbox Code Playgroud)


Vic*_*tor 15

我来到这里是因为我使用的是 JUnit 5,它似乎没有看到 JerseyTest 设置/拆卸方法上的 @Before 和 @After 注释。我不得不覆盖它们并使用新的 JUnit 5 注释

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是相应的错误报告(自 2017-09 起开放):https://github.com/eclipse-ee4j/jersey/issues/3662 (3认同)