新しいEclipseで古いJUnit 4を起動するとNullPointerExceptionになる。新しい・古いは曖昧な表現だが、たとえば、この現象が発生する具体的なバージョンの例は以下の通り。
環境
- jdk 1.8
- Eclipse 2021-06(4.20.0)
- Junit 4.3
現象
エラーログは以下の通り。
java.lang.NullPointerException
at org.eclipse.jdt.internal.junit4.runner.SubForestFilter.shouldRun(SubForestFilter.java:84)
at org.junit.internal.runners.TestClassMethodsRunner.filter(TestClassMethodsRunner.java:84)
at org.junit.runner.manipulation.Filter.apply(Filter.java:47)
at org.junit.internal.runners.TestClassRunner.filter(TestClassRunner.java:64)
at org.junit.runner.manipulation.Filter.apply(Filter.java:47)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:34)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:74)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:49)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:513)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
対策
このエントリ執筆時点では4.x系の最新が4.13.2なのでそれに変更する。