Не удается разрешить импорт org.junit


114

Мне нужно решить Java-задачу для собеседования, и мне прислали тестовый класс. Это начинается с

import org.junit.Before;

а также местами имеет следующий синтаксис:

@RunWith(JUnit4.class)
...
@Before
...
@Test

Я давно не использовал Java, поэтому меня это немного смущает. Я загрузил eclipse, и когда я пытаюсь скомпилировать этот тестовый файл, возникают ошибки при импорте и в знаках @. Ошибка импорта выдает:

The import org.junit cannot be resolved.

И @RunWith даже не распознается, потому что он пытается преобразовать его в тип.


1
Что вы искали в сети? Вы хотите, чтобы мы подробно объяснили, как можно запустить тестовый пример JUnit 4? (Подсказка: это есть JUnit4.classв вашем коде)
Луигги Мендоза,


1
вам нужно добавить в проект jar-файл junit. Вы можете использовать junit-dep-4.8.2.jar. Затем вы можете щелкнуть правой кнопкой мыши и выбрать запустить как тестовый пример junit
Крушна

2
Вы добавили jar-файл jUnit в свой путь сборки в eclipse?
Прадип Симха

Просто сделал, я должен был просто погуглить этот вопрос. Спасибо за помощь.
SKLAK

Ответы:


192

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

  1. Командная строка : в случае вызовов из командной строки вам нужно будет добавить junit.jarв путь к классам вашего приложения с помощью java -cp /path/to/junit.jar. Взгляните на ответы здесь .

  2. Использование eclipse : Дистрибутивы Eclipse связаны с этой библиотекой, и именно так вы можете использовать ее в своем проекте. Щелкните правой кнопкой мыши проект eclipse и перейдите:

Свойства -> Путь сборки Java -> Библиотеки -> Добавить библиотеку -> JUnit -> Junit 3/4

В сценариях, где вы хотите использовать другую версию jar, вместо того, чтобы нажимать « Добавить библиотеку» выше, вы должны нажать « Добавить внешнюю банку» и найти библиотеку в файловой системе.


1
@NishantShreshth, как добавить это в mavenпроект?
Касун Сиямбалапития

Я добавил JUnit 4 через Свойства -> Путь сборки Java, но время от времени Eclipse по-прежнему показывает мне эту ошибку, хотя выполнение тестов возможно без проблем. Перезапуск Eclipse решает проблему - на время. Любое объяснение этому?
Thomas W

У меня не работает. Поскольку проект является модульным, все кнопки на вкладке «Библиотеки» становятся серыми. (С eclipse 2019-09 и java 11.0.4).
Gyro Gearloose

14

Щелкните правой кнопкой мыши проект eclipse и перейдите:

Свойства -> Путь сборки Java -> Библиотеки -> Добавить библиотеку -> JUnit -> Junit 3/4

У меня работает.


6

вы можете легко найти строку вроде «@Test», а затем использовать быстрое исправление «добавить библиотеку junit 4 в путь сборки» в этой строке. я думаю, что это быстрее, чем вручную добавлять junit в проект.


В моей ситуации это не решает. JUnit идеально подходит, но продолжает показывать ошибку.
猫 IT

1
У меня работает ^^
jumping_monkey

6

Если вы используете maven и этот фрагмент кода находится в mainпапке, попробуйте переместить его в testпапку.


3
@VigneshrajSekarbabu Потому что люди обычно устанавливают junitобласть видимости как test, что означает, что они будут работать только в тестовой папке.
Searene

Спасибо @searene .. Я попытался разместить свою TestBase в src / main / java, но потом не смог получить аннотации testNG. поэтому переехал в src / test / java. Но теперь я пытаюсь создать RetryAnalyzer в src / main / java, а IRetrAnalyzer находится в org.testng, который я не могу получить в классах src / main / java. любая идея, что может решить это?
Vigneshraj Sekarbabu

@VigneshrajSekarbabu Один из способов - проверить область ваших зависимостей, связанных с тестами, убедиться, что это не testтак, чтобы вы могли использовать все, что находится внутри /src/main/java.
Searene

5

Если вы используете eclipse и работаете над проектом maven, то вышеуказанные шаги также работают.

Щелкните правой кнопкой мыши корневую папку.

Properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

Пошаговая инструкция здесь


Для меня это только сработало. Я выполнял удаленную отладку своего веб-приложения, поэтому у eclipse возникли проблемы с интеграцией junit. Что касается maven, да, maven импортирует junit и запустит тесты, когда мы запустим mvn clean install. Не эксперт, но это то, что, как мне кажется, произошло или, по крайней мере, произошло со мной.
sarthakgupta072

2

Кажется, что файл jar Junit не находится в пути, также убедитесь, что вы используете jdk1.5 или выше.


Не только jar, OP должен запускать его как тест JUnit (возможно, OP спросит, как запустить класс Java, если у него нетpublic static void main(String[] args)
Луигги Мендоза,

Не знал, как связать JUnit. Я понял. Щелкните правой кнопкой мыши имя проекта и свяжите JUnit. Спасибо.
SKLAK

2

Если вы используете Java 9 или выше, вам может потребоваться зависимость junit в вашем module-info.java

module myModule {
    requires junit;
}

Я почти уверен, что проблема, с которой я столкнулся, такая же, как и исходный вопрос, связана с этим новым модульным механизмом. Теперь я добавил эту строку в свой существующий module-info.java, и в проводнике пакетов больше нет красного креста, но в исходном коде все остается прежним.
猫 IT

2

Если вы используете Maven, вы можете щелкнуть в контексте и запустить Maven / Update Project ...

введите описание изображения здесь


Когда я это делаю, module-info.java заполняется ошибками, а лямбды не распознаются. Eclipse / maven вернул библиотеку и версию java к 1.5, и у меня есть <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-compiler-plugin </artifactId> <version> 3.8 .0 </version> <configuration> <release> 11 </release> </configuration> </plugin> в моем pom
Gyro Gearloose

1

В стартовой строке кода скопируйте прошедшие элементы «Junit» или «TestNG», которые будут отображаться с ошибкой, пока вы не импортируете библиотеку с файлом проекта.

Чтобы импортировать библиотеки в проект:

Right Click on the Project --> Properties --> Java Build Path --> Libraries -> Add Library -> 'Junit' or 'TestNG'

Добавить библиотеки Junit


1

Когда вы добавляете TestNG в зависимости от Maven, измените область видимости с test на compile. Надеюсь, это решит вашу проблему.


Пожалуйста, рассмотрите возможность размещения таких предложений в качестве комментариев.
Hades

1

вам нужно добавить зависимость Junit в файл pom.xml, это означает, что вам нужно обновить до последней версии.

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency> 

0

Если вы хотите создать свой собственный тестовый класс. В Eclipse перейдите в File -> New -> J Unit Test Case . Затем вы можете выбрать все свои пути и настройку класса тестирования во всплывающем окне мастера.


-2

Обновите до последней версии JUnit в pom.xml. Меня устраивает.


этот ответ был бы лучше с более подробной информацией о том, как это сделать - то есть какой код вставлять, как определить последнюю версию, как искать код в Интернете, чтобы получить правильный текст и т. д.
LightCC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.