[Java][Eclipse] Eclipse上でJUnit 4 テスト実行時にNoClassDefFoundErrorが発生し失敗する

環境

内容

Eclipse上で簡単なテストクラスを作ってJUnitテストを実行したら
下記のNoClassDefFoundErrorが発生する現象があり少々はまったので
対応策を備忘録として記載。

java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:315)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:381)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:371)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:366)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:310)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:225)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.manipulation.Filter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 8 more

対応策

おそらく本現象が発生している場合、
プロジェクト(右クリック) > Javaのビルド・パス > ライブラリータブ >
で以下のようにモジュールパス配下にJUnit4が入っているはず f:id:WaterFalls:20210308164217j:plain
これをクラスパス配下に変更する。 f:id:WaterFalls:20210308164415j:plain おそらく問題なくJUnitが動作するはず。



テスト駆動開発

テスト駆動開発