[解決済み】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 を実際に動かしてみたビデオです。
関連
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】Javaメソッドスタブ
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】破損したjarファイル
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】Javaの未処理例外について
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] JavaでNoClassDefFoundErrorが発生するのはなぜですか?