ClassNotFoundException при запуске модульных тестов JUnit в Eclipse (с использованием Maven) - PullRequest
17 голосов
/ 12 мая 2011

Я только что обновил свой SpringSource Tools Suite (STS, вариант IDE Eclipse) до последней версии (v3.6.1).Тогда все мои юнит-тесты JUnit не могут быть запущены снова.Я получаю эту ошибку:

Class not found ClassToTest
java.lang.ClassNotFoundException: ClassToTest
    at java.net.URLClassLoader$1.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 ]

18 голосов
/ 13 августа 2012

В текущем плагине m2e все еще есть некоторые бэк-дро. Модульные тест-кейсы не могут быть запущены, так как их проект включается в рабочий набор. Может помочь следующее:

  1. Щелкните правой кнопкой мыши по проекту, включая junit-тесты.
  2. Выберите Maven -> Отключить разрешение рабочей области

Попробуйте снова запустить тест.

5 голосов
/ 13 мая 2011

ОК, кажется, мне придется самому ответить на этот вопрос.

Основной причиной этой проблемы по-прежнему является плагин m2eclipse eclipse.Новая версия этого плагина не поддерживает вложенные модули в одном проекте.Если нам действительно нужно увидеть несколько модулей, нам нужно удалить старый из проводника пакетов, создать рабочий набор и снова импортировать проект, используя опцию «импортировать существующие проекты maven».Мастер импорта eclipse откроет окно и спросит, какой модуль нужно импортировать.Затем мы можем выбрать все модули и завершить импорт.В результате рабочий набор будет содержать все модули вашего проекта и рассматривать каждый модуль как отдельный проект, хотя в рабочей области ваши модули все еще находятся в одном проекте.Делая это, он решает все проблемы, с которыми я столкнулся в Eclipse, связанные с classpath, такие как невозможность поиска в классе или неспособность запустить модульные тесты и получить исключение java.lang.ClassNotFoundException.

Для справки, вот статья, которая научит вас создавать рабочий набор: Рабочий набор

Я думаю, вы можете импортировать проект, не создавая новый рабочий набор, но рабочий наборвсе модули, которые принадлежат вашему проекту, будут храниться в одном наборе, чтобы их было проще организовать.

Я хотел бы получить ответ два месяца назад, чтобы не тратить много времени на поиск решения.

4 голосов
/ 09 июня 2011

Я думаю, что нашел решение, по крайней мере, это сработало для меня: щелкните правой кнопкой мыши на проекте и выберите «Maven» -> «Обновить зависимости»

Затем, когда я попытался, я не получил ClassNotFoundException.

2 голосов
/ 24 августа 2015

Мы также столкнулись с тем же ClassNotFoundException при попытке запустить тестовый класс JUnit. Но когда мы попытались выполнить следующие шаги, он успешно запустился.

  1. Выберите ваш проект.
  2. Нажмите на опцию проекта, отображаемую на панели инструментов в IDE затмения.
  3. Выберите «очистить».
  4. Теперь попробуйте запустить тестовый файл.
2 голосов
/ 17 мая 2013

Я перепробовал все упомянутое здесь и в других постах.Вот некоторые из предложенных решений:

  1. Изменение выходной папки для классов тестирования.
  2. Создание собственного компоновщика для проекта, который будет запускать тест-компиляцию из Maven.
  3. Переместите зависимости Maven выше в списке «Порядок и экспорт» в пути сборки проекта.

Их было много, много, но один, который я нашел для работы, был следующим:

  1. Закройте среду разработки.
  2. Удалите фляги, используемые проектом, из моего локального репозитория Maven.
  3. Откройте IDE.
  4. Сборка проекта.
  5. Запустите тест.

После нескольких часов стука моей головы по клавиатуре и следуя предложенным решениям, этот сработал!

0 голосов
/ 12 мая 2011

В качестве обходного пути попробуйте запустить mvn test-compile (либо в Eclipse, либо из командной строки), затем попробуйте запустить тест Junit в Eclipse.

...