Eclipse JUnit - возможные причины просмотра "initializationError" в окне Eclipse
Я знаю, что этот вопрос довольно общий, но я не нашел никаких намеков на то, почему эта ошибка может появиться. Каковы возможные причины просмотра initalizationError в окне Eclipse? Я не получаю никакой полезной информации, просто длинной и бесполезной трассировки сбоя (не включенной здесь).
Я использую JUnit 4.11
Я написал следующий код - просто чтобы посмотреть, работает ли он:
package test;
import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class SimpleTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void test() {
assertEquals(15, 15);
}
}
Изменить: Извините В окне Eclipse он на самом деле назвал "Трассировку сбоя":
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at
java.lang.ClassLoader.defineClass1(Native Method) at
java.lang.ClassLoader.defineClass(Unknown Source) at
java.security.SecureClassLoader.defineClass(Unknown Source) at
java.net.URLClassLoader.defineClass(Unknown Source) at
java.net.URLClassLoader.access$100(Unknown Source) at
java.net.URLClassLoader$1.run(Unknown Source) at
java.net.URLClassLoader$1.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) at
org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
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)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException:
org.hamcrest.SelfDescribing at java.net.URLClassLoader$1.run(Unknown
Source) at java.net.URLClassLoader$1.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) ... 25 more
Ответы
Ответ 1
Вероятно, у вас есть одна из двух проблем:
1) Вы используете JUnit 4.11, который не включает hamcrest. Добавьте библиотеку hamcrest 1.3 в свой путь к классам.
2) У вас есть hamcrest 1.3 на вашем пути к классам, но у вас есть другая версия junit или hamcrest в вашем пути к классам.
Для фона junit pre 4.11 включил вырезанную версию hamcrest 1.1. 4.11 удалили эти классы.
Ответ 2
Для меня это была глупая ошибка. Я непреднамеренно установил тест как частный вместо public:
@Test
private void thisTestWasCausingProblems() {
...
}
он должен был
@Test
public void thisTestIsOK() {
...
}
Ответ 3
Просто попробуйте "Project > Clean..." - похоже, это решение многих проблем в Eclipse!
Ответ 4
Для меня это было отсутствующее ключевое слово static
в одном из аннотированных методов JUnit, например:
@AfterClass
public static void cleanUp() {
// ...
}
Ответ 5
Я получил эту ошибку, когда класс был аннотирован с помощью @Ignore, и я попытался запустить специальный тест, щелкнув его правой кнопкой мыши. Удаление @Ignore устранило проблему.
Ответ 6
Я экспериментировал с той же ошибкой. Моя проблема заключалась в том, что созданный мной метод SetUp был объявлен как статический.
Если вы используете eclipse, можно получить хорошее описание, щелкнув над ошибкой, а затем проверив окно трассировки сбоя, чуть ниже... Вот как я нашел настоящую проблему!
Ответ 7
Также убедитесь, что у вас есть все @Before
-, @After
- и все что-то-JUnit-аннотированные методы, объявленные как public
. У меня был объявлен как private
, который вызвал проблему.
Ответ 8
Эта проблема также возникает, если у вас есть частное правило в классе:
@Rule
private TemporaryFolder folderRule;
Сделать общедоступным.
Ответ 9
Для меня это было связано с "возвращаемым типом" метода тестирования. Он должен быть "недействительным"
Ответ 10
Для меня это было чем-то связанным с ведением журнала. Поскольку я использовал
@RunWith(SpringJUnit4ClassRunner.class)
Это разрешило мою проблему
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
Ответ 11
У меня была та же проблема: как только это было проблемой пути excel, и в другое время отсутствовала аннотация @Test
.
Ответ 12
У меня была одна и та же проблема и одно и то же сообщение. Я смог зафиксировать это, импортировав в Java Building Path архив hamcrest-all-1.3.jar
. Я использую версию JUnit 4.12.
Ответ 13
Моя проблема заключалась в том, что у моего родительского класса не было методов @Test
. Я использовал там только некоторые утилиты. Когда я объявлял его abstract
, он работает.
Ответ 14
Моя ошибка заключалась в том, что я пропустил аннотацию @Test по методу теста.
Ответ 15
У меня была такая же проблема... Я использовал инструмент построения maven с областью зависимости JUnit как "test", а мой метод @Test был в основном модуле.
Чтобы решить проблему, я:
1. Прокомментировал тег области зависимости JUnit в pom.xml
2. Восстановленный пакет
3. Убедитесь, что класс Test имеет только один конструктор
Проблема может быть двукратной:
1. Зависимость JUnit ограничена областью тестирования, а метод @Test находится в основной области
2. Класс test имеет более одного конструктора
Ответ 16
У меня была та же проблема, решение для меня следующее.
Я только установил файл junit.jar из Интернета, но эта библиотека связана с hacrest-core.jar
Когда я загрузил файл hacrest-core.jar и добавил его в свой проект, все работает нормально.
Ответ 17
Для меня решение было одним из методов должно быть недействительным, я имел его как Boolean.
Ответ 18
Junit 4.11 не работает с Spring тестовой структурой.
Также эта ссылка InitializationError When Use Spring + Junit объясняет, как отлаживать junit initalizationError в eclipse.
Ответ 19
Если вы используете язык xtend (или какой-либо другой JVM-язык с типом вывода) и явно не задали тип возвращаемого значения, то он может быть установлен на не-void-тип из-за последнего выражения, которое сделает Ошибка JUnit.
Ответ 20
У меня есть еще одна ошибка, но для будущих посетителей, использующих их любимую поисковую систему:
Для меня проблема заключалась в том, что eclipse каким-то образом решила выполнить только один метод в моем тестовом классе (я не мог понять, почему, хотя).
Особенно, если вы ничего не изменили в своей настройке, проверьте конфигурацию прогона.
Ответ 21
В моем случае я изменил название проекта в pom.xml, так что новый целевой каталог был сгенерирован, а junit искал классы в старом каталоге. Вам нужно сменить каталог для JUnit также в Eclipse
Properties -> Java Build Path -> Source (Default output folder)
И также проверьте, что некоторые исходные папки, перечисленные в том же окне, могут иметь прежнее имя каталога. Вы также должны изменить их.
Ответ 22
Для меня я по ошибке добавил параметр в метод теста, который вызвал ошибку инициализации.
Ответ 23
Я наивно добавил junit-4.12.jar из poi.apache.org к своему пути сборки в Eclipse. Я удалил его (Project, Properties, Java Build Path, Libraries, junit-4.12.jar, Remove), а затем в своем тестовом классе разрешил Eclipse "Fix Project Setup" после нажатия Ctrl-1. Больше никаких проблем! :-)
Ответ 24
В моем случае у меня был следующий импорт в моем тестовом примере:
import org.junit.jupiter.api.Test;
Правильный импорт:
import org.junit.Test;
Не просто импортируйте старый тестовый тип из junit, убедитесь, что вы выбрали правильный.
Ответ 25
Просто если это помогает, я использовал Junit5, но @RunWith (SpringRunner.class) указывал на import org.springframework.test.context.junit4.SpringRunner, который возился с вещами и, следовательно, выдавал ошибку инициализации.
Я исправил это, и это сработало.