本來 Jersey Test Framework 是對應 JUnit 4 使用的 Jersey 測試環境
如果開發環境升級到 JUnit 5 的話,就會出現像下述這樣的 NullPointerException 的狀況。
1 2 3 |
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 上,可以先暫時以這種方式繞過問題。
1 2 3 4 5 6 7 8 9 10 11 12 |
@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。
沒有留言:
張貼留言