Не удается запустить тест junit в eclipse, ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner - PullRequest
0 голосов
/ 08 января 2020

Когда я пытаюсь запустить тест junit в eclipse для проекта, созданного с помощью gradle, я получаю следующую ошибку в консоли eclipse

Error: Could not find or load main class org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner

Если я запускаю тот же тест из командной строки, используя

gradle test

все работает нормально.

Также я заметил, что если убрать следующие две зависимости:

testImplementation group: 'org.apache.tomee', name: 'openejb-cxf-rs', version: '8.0.0'
testImplementation group: 'org.apache.tomee', name: 'arquillian-tomee-embedded', version: '8.0.0'

, тесты могут быть запущены в Eclipse. Очевидно, что в какой-то момент тесты не пройдены из-за отсутствующих зависимостей.

Похоже, что в Eclipse происходит какой-то странный конфликт. Также он работал нормально до декабрьского обновления Eclipse.

Для полноты здесь приведены версии:

  • gradle 6.0.1
  • Eclipse 2019-12 (4.14. 0)
  • Jdk 11
  • Junit 4.12

Сегодня я также пытался установить более старую версию Eclipse (2019-09) и там с той же настройкой я мог просто запустить тесты.

Также я заметил следующее. Если я go Выполнить-> Выполнить конфигурации, выберите мой тестовый прогон и «Показать командную строку», я замечу, что когда что-то не работает, путь к классам записывается в файл, тогда как когда он работает, он просто записывается как командная строка. Аргументы.

Таким образом, следующее не работает:

C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 "@C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58388 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest

Ниже приведено

C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 -classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...manymorehere" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58412 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest

Таким образом, основное отличие состоит в том, что в первом случае classpath оценивается из файла

C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt

и во втором случае выписывается

-classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...

1 Ответ

2 голосов
/ 08 января 2020

Похоже на ошибку Eclipse, подробности см. Здесь

https://bugs.eclipse.org/bugs/show_bug.cgi?id=558495

Я добавил следующую сторону загрузки

https://download.eclipse.org/eclipse/updates/4.15-I-builds/I20200105-1800/

и обновленное «Eclipse Java Инструменты разработки»

Это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...