Я пытаюсь создать простой проект Java с Maven. В моем pom-файле я объявляю JUnit 4.8.2 единственной зависимостью. Тем не менее Maven настаивает на использовании JUnit версии 3.8.1. Как мне это исправить?
Проблема проявляется в сбое компиляции: «пакет org.junit не существует». Это из-за оператора импорта в моем исходном коде. Правильное имя пакета в JUnit 4. * - org.junit. *, А в версии 3. * - junit.framework. *
Я думаю, что нашел документацию по корню проблемы на http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html, но совет, похоже, предназначен для экспертов Maven. Я не понимал, что делать.
Ответы:
Просто чтобы получить ответ с полным решением, которое поможет посетителям:
Все, что вам нужно сделать, это добавить зависимость junit в
pom.xml
. Не забывайте<scope>test</scope>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
источник
@Dennis Roberts: Вы были абсолютно правы: мой тестовый класс располагался в src / main / java. Также значение элемента «scope» в POM для JUnit было «test», хотя так оно и должно быть. Проблема заключалась в том, что я был небрежно при создании тестового класса в Eclipse, в результате чего он был создан в src / main / java, вставленном из src / test / java. Это стало легче увидеть в представлении Eclipse Project Explorer после запуска «mvn eclipse: eclipse», но именно ваш комментарий заставил меня увидеть это первым. Благодарю.
источник
Моя проблема заключалась в строке внутри меня, у
pom.xml
меня была строка,<sourceDirectory>${basedir}/src</sourceDirectory>
удаляющая эту строку, заставляла maven использовать папки с обычной структурой, что решает мою проблемуисточник
удаление тега области в pom.xml для junit сработало ..
источник
У меня такая же проблема. Все, что я сделал, это - из файла pom.xml я удалил зависимость для junit 3.8 и добавил новую зависимость для junit 4.8. Затем я сделал maven clean и maven install. Это сделало свое дело. Чтобы проверить, после установки maven я перешел проект-> свойства-путь сборки-> зависимости maven и увидел, что теперь jar junit 3.8 исчез!, Вместо этого отображается jar junit 4.8. прохладный!!. Теперь мой тест проходит как шарм .. Надеюсь, это как-то поможет ..
источник
Добавьте эту зависимость в свой
pom.xml
файл:http://mvnrepository.com/artifact/junit/junit-dep/4.8.2
<!-- https://mvnrepository.com/artifact/junit/junit-dep --> <dependency> <groupId>junit</groupId> <artifactId>junit-dep</artifactId> <version>4.8.2</version> </dependency>
источник
Мой случай был простой оплошностью.
Я поставил JUnit объявления зависимостей внутри
<dependencies>
под<dependencyManagement/>
узлом , а не<project/>
в файле POM. Правильный способ:<project> <!-- Other elements --> <dependencies> <!-- Other dependencies--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies> <project>
источник
Как вы заявили версию?
<version>4.8.2</version>
Помните о значении этой декларации, объясненной здесь (см. ПРИМЕЧАНИЯ) :
При объявлении «нормальной» версии, такой как 3.8.2 для Junit, внутренне это представляется как «разрешить все, но предпочитать 3.8.2». Это означает, что при обнаружении конфликта Maven может использовать алгоритмы конфликта, чтобы выбрать лучшую версию. Если вы укажете [3.8.2], это означает, что будет использоваться только 3.8.2 и ничего больше.
Чтобы принудительно использовать версию 4.8.2, попробуйте
<version>[4.8.2]</version>
Поскольку у вас нет других зависимостей в вашем проекте, не должно быть конфликтов, вызывающих вашу проблему. Первое объявление должно работать на вас, если вы можете получить эту версию из репозитория. Вы наследуете зависимости от родительского pom?
источник
<version>[4.8.2,)</version>
лучше ли форсировать хотя бы эту версию?Мои файлы были в правильных местах, и простое удаление
<scope>test</scope>
из записи зависимости JUnit решило проблему (я использую JUnit 4.12). Я считаю, что сtest
областью видимости зависимость просто игнорировалась на этапе компиляции. Теперь все работает даже когда звонюmvn test
.источник
У меня была очень похожая проблема в проекте «test-utils» (добавление функций, правил и утверждений в JUnit), дочернем по отношению к родительскому проекту, внедряющему зависимости. Класс, зависящий от пакета org.junit.rules, находился в src / main / java.
Поэтому я добавил зависимость от junit без области тестирования, и это решило проблему:
pom.xml проекта test-util:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency>
pom.xml родительского проекта:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency>
источник
У меня была аналогичная проблема с Eclipse, компилирующим мой код, но Maven терпел неудачу при компиляции тестов каждый раз, несмотря на то, что JUnit был в моем списке зависимостей, а тесты были в / src / test / java /.
В моем случае у меня была неправильная версия JUnit в моем списке зависимостей. Я написал тесты JUnit4 (с аннотациями), но в качестве зависимости использовал JUnit 3.8.x. Между версиями 3.8.x и 4 JUnit они изменили имя пакета с junit.framework на org.junit, поэтому Maven по-прежнему прерывает компиляцию с использованием JUnit jar.
Я до сих пор не совсем уверен, почему Eclipse успешно скомпилирован. У него должна быть собственная копия JUnit4 где-то в пути к классам. Надеюсь, это альтернативное решение будет полезно людям. Я достиг этого решения после того, как перешел по ссылке Артура выше.
источник
Я также столкнулся с этой проблемой - я пытался получить объект из источника, и он работал в тестовом коде, но не в коде src. Для дальнейшего тестирования я скопировал блок кода из теста и поместил его в код src, а затем сразу удалил строки JUnit, так что я просто понял, как тест вытягивает объект. И вдруг мой код не компилируется.
Проблема заключалась в том, что, когда я вставил код, Eclipse услужливо разрешил все классы, поэтому у меня были вызовы JUnit, исходящие из моего кода src, что было неправильно. Я должен был заметить предупреждения о неиспользованном импорте вверху, но не заметил их.
Как только я удалил неиспользуемый импорт JUnit в моем файле src, все заработало прекрасно.
источник
У меня тоже была такая же проблема, как показано ниже.
Чтобы решить эту проблему, в
dependencies
раздел build.gradle уровня приложения добавляются строки ниже.Затем сборка Gradle сообщила о следующем предупреждении.
Чтобы устранить это предупреждение, в build.gradle уровня приложения добавлен следующий раздел.
источник
Найдите одно решение этой ошибки, если у вас есть код в src / main / java Utils.
<dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>3.9.1</version> </dependency>
источник
Изменение версии junit исправило это для меня. Похоже, что версия 3.8.1 в моем случае не сработала. Проблема исправлена при изменении версии на 4.12.
источник
По умолчанию maven просматривает эти папки для классов java и test соответственно - src / main / java и src / test / java.
Когда src указан с тестовыми классами в исходном коде, а область для зависимости junit в pom.xml указана как test - org.unit не будет найден maven.
источник