1. ホーム
  2. java

[解決済み】Eclipse No tests found using JUnit 5 caused by NoClassDefFoundError for LauncherFactory

2022-02-04 22:37:01

質問

問題点

プロジェクトのJUnitテストを実行すると(JUnit 5、Java 9、Eclipse Oxygen 1.aを使用)、eclipseがテストを見つけられないという問題が発生します。

説明

実行設定の下で、eclipseは@Testでアノテーションされたメソッドを見つけることすらできず、代わりに"が表示されるだけです。 (すべてのメソッド) となります。 次の図は、私のセットアップをよりよく垣間見ることができることを願っています。

コンソール出力です。

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

これまでに試したこと

すでに試したこと

  • ビルドパスからtestフォルダを削除し、再度追加してください。
  • を付けたメソッドにカーソルを合わせて、"JUnitのテストとして実行"をクリックすると、テストが開始されます。
  • BuildpathからJUnitを削除し、再度追加する。
  • eclipseを再起動します。
  • また、プロジェクト全体をあるマシンから別のマシンに移動し、そこに提供されたeclipseのインストールで試してみました
  • を実行して、テストメソッドの名前を変更します。
  • を入力して、@Testアノテーションを再入力します。

これらの手順の一部 はここにあります。 しかし、結局は問題が残った。

解決方法は?

に遭遇しました。 Eclipseのバグ525948 という項目がありますが、これはすでに修正されており、2018年3月21日にリリース予定のOxygen.3(4.7.3)で公開される予定です。

回避策として テストコードを別のプロジェクトに置く を追加し、テスト対象のプロジェクトをmodulepathに追加してください。 module-info.java をテストプロジェクトに追加します。プロジェクト、クラス、モジュールの命名で、以下のようになります。

こちらもご覧ください Eclipse Oxygen.1a で Java 9 と JUnit 5 を実際に動かしてみたビデオです。