本來 Jersey Test Framework 是對應 JUnit 4 使用的 Jersey 測試環境
如果開發環境升級到 JUnit 5 的話,就會出現像下述這樣的 NullPointerException 的狀況。
java.lang.NullPointerException at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:564) at org.glassfish.jersey.test.JerseyTest.target(JerseyTest.java:578)
而參考了被發在 Github 上的 bug [1],在 JUnit 5 上,可以先暫時以這種方式繞過問題。
@TestInstance(value = Lifecycle.PER_CLASS) public class MyTest extends JerseyTest { @BeforeAll public void prepareEnvironment() throws Exception { super.setUp(); } @AfterAll public void clearEnvironment() throws Exception { super.tearDown(); } }
其中 @TestInstance 可以參考 [2],主要是因為 @BeforeAll 和 @AfterAll 本來應該要是 static method
但因為內容要呼叫 super,因此 method 無法做成 static method
就要依靠 @TestInstance 來讓 non-static method 可以標注 @BeforeAll、@AfterAll。
沒有留言:
張貼留言