ClassNotFoundException при запуске модульных тестов JUnit в Eclipse (с использованием Maven)
Я только что обновил свой SpringSource Tools Suite (STS, вариант IDE Eclipse) до последней версии (v3.6.1). Тогда все мои модульные тесты JUnit не могут быть запущены снова. Я получаю эту ошибку:
Class not found ClassToTest
java.lang.ClassNotFoundException: ClassToTest
at java.net.URLClassLoader.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
согласно этому блогу: ClassNotFoundException при запуске модульных тестов JUnit в Eclipse (с использованием Maven), это из-за некоторой неправильной конфигурации плагина Maven в Eclipse. Однако в STS 3.6.2 я не могу найти эту опцию "включить модули" в Maven плагин. Как исправить эту проблему и повторно включить модульные тесты?
6 ответов
на текущем плагине m2e все еще есть некоторые обратные ничьи. Unit-test-cases не могут быть запущены как их включая проект, сгруппированный в рабочий набор. Может помочь следующее:
- щелкните правой кнопкой мыши на проекте, включая junit-тесты.
- выберите Maven - > Отключить Разрешение Рабочей Области
попробуйте снова запустить тест.
хорошо, кажется, мне придется ответить на этот вопрос самостоятельно.
основной причиной этой проблемы по-прежнему является плагин m2eclipse eclipse. Новая версия этого плагина не поддерживает вложенные модули в одном проекте. Если нам действительно нужно увидеть несколько модулей, мы должны удалить старый из проводника пакетов и создать рабочий набор и импортировать проект снова, используя опцию "импорт существующих проектов maven". Мастер импорта eclipse откроет окно и спросит вас какой модуль необходимо импортировать. Затем мы можем выбрать все модули и завершить импорт. В результате рабочий набор будет содержать все модули вашего проекта и рассматривать каждый модуль как отдельный проект, хотя в рабочей области ваши модули все еще находятся в одном проекте. Делая это, он решает все проблемы, с которыми я столкнулся в Eclipse, связанные с classpath, такие как невозможность поиска класса или невозможность запуска модульных тестов и получения Ява.ленг.ClassNotFoundException.
Для справки, вот статья научит вас, как создать рабочий набор: рабочий набор
Я думаю, вы можете импортировать проект без создания нового рабочего набора, но рабочий набор сохранит все модули, принадлежащие вашему проекту, в одном наборе, поэтому его легче организовать.
жаль, что у меня не было ответа два месяца назад, поэтому я бы не потратил много времени на поиск решения.
Я думаю, я нашел решение, по крайней мере, это сработало для меня: щелкните правой кнопкой мыши проект и выберите "Maven" - > "обновить зависимости"
затем, когда я попытался, я не получил ClassNotFoundException .
Я пробовал все, что упоминалось здесь и в других сообщениях. Некоторые из решений, которые предлагали люди, были:
- измените выходную папку для тестовых классов.
- создайте пользовательский конструктор для проекта, который будет запускать тестовую компиляцию из Maven.
- переместите зависимости Maven выше в списке порядок и экспорт в пути сборки проекта.
было много, много больше, но тот, который я нашел для работы, был следующим:
- закройте среду разработки.
- удалите банки, используемые проектом, из моего локального репозитория Maven.
- откройте IDE.
- построить проект.
- выполнить проверку.
после нескольких часов избиения моей головы о клавиатуру и после предлагаемых решений, это сработало!
мы тоже столкнулись с тем же ClassNotFoundException при попытке запустить тестовый класс JUnit. Но когда мы попытались использовать следующие шаги, он успешно начал работать.
- выберите проект.
- нажмите на опцию проекта, отображаемую на панели инструментов в Eclipse IDE.
- выберите "Очистить".
- Теперь попробуйте запустить тестовый файл.
Как обойти, попробовать работает mvn test-compile
(либо в Eclipse, либо из командной строки), затем попробуйте запустить тест Junit в Eclipse.