Класс не найден исключение при выполнении теста JUnit



Я получаю эту ошибку при запуске JUnit test в Eclipse:



Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)


Я пробовал добавлять JUnit библиотека в пути к классам, хотя я использую maven, а библиотека JUnit находится в зависимости POM.



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

866   16  

16 ответов:

это происходит потому, что только исходный код компиляции при использовании mvn clean compile (Я использую maven 3.1.0, поэтому я не уверен, что он всегда вел себя так).

если вы запустите mvn test, тестовый код также будет компилироваться, но затем он запускает тесты (Что может быть не сразу желательно, если вы пытаетесь запустить их через Eclipse.) Способ обойти это, чтобы добавить test-compile к вашей последовательности команд Maven всякий раз, когда вы делаете mvn clean. Например, вы могли бы запустить mvn clean compile test-compile.

У меня была аналогичная проблема с моими тестами и нашел где-то в интернете, что вы должны пойти в Построить Путь в свойствах вашего проекта и переместить Зависимостей Maven выше системная библиотека JRE. Это, кажется, сработало для меня.

я столкнулся с той же проблемой, и я смог исправить это с помощью @slomek's ответ но проблема всплыла после этого.

я, наконец, исправил это, добавив выходную папку моего проекта в конфигурацию запуска теста JUnit. Шаги:

  • найти папку вашего проекта от Project properties -> Java Build Path -> Default output folder
    • обычно это <project-folder>/bin
  • на Run -> Run Configurations...
  • нажмите на конфигурацию запуска модульного теста и нажмите на Classpath tab
  • явно добавьте выходную папку вашего проекта под User Entries - даже если проект уже включен там
    • нажать на кнопку Advanced -> Add folder чтобы добавить выходную папку

эта проблема может быть вызвана странной настройкой проекта в Eclipse-например, исходная папка с вложенными проектами maven, импортированными как один проект / папка (по крайней мере, так был настроен мой проект).

Если эта проблема возникает только в Eclipse, выполнение команды Project - > Clean... на выбранном проекте может помочь.

после того, как попробовал все здесь без каких-либо улучшений, я решил свою проблему, просто перезапустив Eclipse

в моем случае у меня была неправильная структура каталогов maven.

Что должно быть так:

/ src / test / java/ com.мой проект.сервер.Образом: mytest

после того, как я исправил это - все работало как шарм.

в моем случае, только следующие шаги помогли мне решить эту проблему:

  1. проект - > свойства - > параметры запуска / отладки.
  2. в "конфигурации запуска '.....'"выберите классы / проекты
  3. Edit - > Classpath - > "Восстановить Записи По Умолчанию"

раньше, в этом случае, я всегда делал mvn eclipse:eclipse и перезапустить Eclipse и он работал. После перехода на GIT он перестал работать для меня, что несколько странно.

основная проблема здесь заключается в том, что Mr Eclipse не находит скомпилированный класс. Затем я устанавливаю выходную папку как Project / target/test-classes, которая по умолчанию генерируется mvn clean install не пропуская тест и приступили к следующему обходному пути:

Вариант 1: установить путь к классу для каждого теста дело

затмение ->выполнить ->конфигурации ->выполнить в соответствии с JUnit->выберите образом: mytest -> вкладке->classpath и выберите записи пользователей->дополнительно->добавить папку -> выберите ->применить->выполнить

Вариант 2: Создайте переменную classpath и включите ее в classpath для всех тестовых случаев

затмение ->ОС Windows ->путь к классу переменных ->новый->[имя : Junit_test_cases_cp | путь ]->ОК Затем перейдите к Затмение->выполнить ->конфигурации ->выполнить вывод->выберите образом: mytest ->вкладке ->classpath в выбор пользователя Записи - > дополнительно - > добавить переменные пути к классам - > выберите Junit_test_cases_cp - > ok - >применить - >выполнить

это единственное, что работает для меня после попытки все предложения онлайн.

У меня была такая же проблема с проектом Gradle с тестовым набором источников с двумя каталогами ресурсов.

этот фрагмент происходит из основного модуля.gradle и добавляет ресурс dir в тестовый набор источников:

sourceSets {
    test {
        resources {
            srcDir('../other-module/src/test/resources')
        }
    }
}

при этом у меня было два каталога ресурсов, связанных с тестовым набором источников основного модуля проекта:

../ другое-модуль / src / тест / ресурсы src / test / resources (относительно папки главного модуля, автоматически добавляемой java плагин)

я узнаю, что если у меня было два файла с одинаковым именем в обоих исходных каталогах, что-то на этапе ресурсов процесса пошло не так. В результате компиляция не началась и по этой причине нет .класс был скопирован в каталог bin, где JUnit искал классы. Исключение ClassNotFoundException исчезло, просто переименовав один из двух файлов.

У меня была аналогичная проблема с моим Eclipse Helios, который отлаживал Junits. Моя проблема была немного другой, поскольку я смог успешно запустить Junits, но когда я получал ClassNotFoundException при отладке тех же JUNITs.

Я пробовал все виды различных решений, доступных в Stackoverflow.com и форумы в другом месте, но ничего не работает. После того, как я ударился головой с этим вопросом в течение почти двух дней, наконец, я понял решение оно.

Если ни одно из решений не работает, просто удалите его .папка метаданных, созданная в рабочей области. Это создаст дополнительные накладные расходы на импорт проектов и всевозможных конфигураций, которые вы сделали, но они, безусловно, решат эту проблему.

надеюсь, что это помогает.

эти шаги работал для меня.

  • удалить содержимое локального репозитория Maven.
  • выполнить mvn clean install в командной строке. (cd в каталог pom).
  • построить проект в Eclipse.

1 - mvn eclipse: eclipse

2-проект очистить все проекты

3 - перезапустить

стоит упомянуть в качестве другого ответа, что если вы используете eGit, и ваш путь к классам обновляется из-за, скажем, инструмента тестового покрытия, такого как Clover, что иногда есть икота очистки, которая не полностью удаляет содержимое /path/to/git/repository/<project name>/bin/

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

Проверьте, открыт ли ваш проект как проект Maven, а не только обычный проект Java. На самом деле без проблем, но это точно та же причина, почему вы можете пропустить его.

Это также может быть связано с " [ошибка] компилятор не предоставляется в этой среде. Возможно, вы работаете на JRE, а не на JDK?"

может быть, вы забыли разместить основной класс и тест класс in / src / test / java. Проверьте это один раз.

Comments

    Ничего не найдено.