Я только что обновился до Eclipse 2018.09 (проблема также возникает в Eclipse Photon), но он плохо работает с проектом, использующим JUnit 4. Похоже, что новая версия запускает все тесты с использованием JUnit 5 runner по умолчанию, который завершается ошибкой со следующими ошибками, потому что у меня только JUnit 4 в пути к классам проекта, а не JUnit 5:
java.lang.NoClassDefFoundError: org/junit/platform/engine/EngineExecutionListener
at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:59)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:370)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:365)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:309)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:224)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:208)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.EngineExecutionListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
Я хочу иметь возможность удобно запускать мои тесты в этом проекте без обновления до новой основной версии JUnit с обходным решением, которое мне не нужно постоянно повторять. Я думаю, что для этого потребуется как-то изменить бегунка по умолчанию.
Обходные пути, которые я обнаружил, и почему они меня не устраивают:
- Обновите вручную каждый запуск конфигурации для каждого теста, чтобы использовать бегун JUnit 4. Я не удовлетворен этим, потому что это раздражает и много работы. Я не могу найти способ изменить настройки конфигурации JUnit по умолчанию, чтобы всегда использовать JUnit 4 Runner. Есть некоторые многообещающие вещи о «прототипных» конфигурациях запуска, но все параметры выделены серым цветом и не работают для конфигураций JUnit.
- Добавьте JUnit 5 в путь к классам. Это позволяет запускать JUnit 5, но я не удовлетворен этим, потому что меня не должны обновлять из-за моей IDE.
Информация о версии Eclipse Photon:
Eclipse Java EE IDE for Web Developers.
Version: Photon Release (4.8.0)
Build id: 20180619-1200
OS: Windows 7, v.6.1, x86_64 / win32
Java version: 1.8.0_171
«Проверка обновлений» не показывает соответствующих пакетов для установки.
Eclipse 2018.09 информация о версии:
Eclipse Java EE IDE for Web Developers.
Version: 2018-09 (4.9.0)
Build id: 20180917-1800
OS: Windows 7, v.6.1, x86_64 / win32
Java version: 1.8.0_171