Подтвердить что ты не робот

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
4b9b3361

Ответ 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, который возился с вещами и, следовательно, выдавал ошибку инициализации. Я исправил это, и это сработало.