Как я могу заставить Eclipse 2018.09 использовать тестовый прогон JUnit 4 по умолчанию? - PullRequest
0 голосов
/ 29 октября 2018

Я только что обновился до Eclipse 2018.09 (проблема также возникает в Eclipse Photon), но он плохо работает с проектом, использующим JUnit 4. Похоже, что новая версия запускает все тесты с использованием JUnit 5 runner по умолчанию, который завершается ошибкой со следующими ошибками, потому что у меня только JUnit 4 в пути к классам проекта, а не JUnit 5:

Could not run test. No tests found with test runner '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 с обходным решением, которое мне не нужно постоянно повторять. Я думаю, что для этого потребуется как-то изменить бегунка по умолчанию.


Обходные пути, которые я обнаружил, и почему они меня не устраивают:

  1. Обновите вручную каждый запуск конфигурации для каждого теста, чтобы использовать бегун JUnit 4. Я не удовлетворен этим, потому что это раздражает и много работы. Я не могу найти способ изменить настройки конфигурации JUnit по умолчанию, чтобы всегда использовать JUnit 4 Runner. Есть некоторые многообещающие вещи о «прототипных» конфигурациях запуска, но все параметры выделены серым цветом и не работают для конфигураций JUnit.
  2. Добавьте 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

1 Ответ

0 голосов
/ 14 марта 2019

Я столкнулся с той же проблемой сейчас и исправил ее после добавления зависимости Vintage Engine в файл POM.xml. Попробуйте.

Хранилище MVN: https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine

...