Проблема компиляции Maven 3 и JUnit 4: пакет org.junit не существует - PullRequest
69 голосов
/ 01 мая 2011

Я пытаюсь создать простой 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. Я не понял, что делать.

Ответы [ 16 ]

1 голос
/ 23 января 2017

Я также столкнулся с этой проблемой - я пытался получить объект из источника, и он работал в тестовом коде, но не в коде src. Для дальнейшего тестирования я скопировал блок кода из теста и поместил его в код src, а затем сразу удалил строки JUnit, так что я просто понял, как тест вытягивал объект. Тогда вдруг мой код не скомпилируется.
Проблема заключалась в том, что когда я уронил код, Eclipse услужливо разрешил все классы, поэтому у меня были вызовы JUnit из моего кода src, что было неправильно. Я должен был заметить предупреждения наверху о неиспользованном импорте, но я не заметил их.
После того, как я удалил неиспользуемый импорт JUnit из моего файла src, все заработало прекрасно.

1 голос
/ 26 сентября 2011

У меня была похожая проблема с компиляцией моего кода в 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 где-нибудь в пути к классам.Надеюсь, что это альтернативное решение полезно для людей.Я достиг этого решения после перехода по ссылке Артура выше.

0 голосов
/ 14 октября 2018

Изменение версии junit исправило это для меня.Похоже, версия 3.8.1 не работает в моем случае.Исправлена ​​ошибка при изменении на 4.12

0 голосов
/ 29 августа 2018

Найдите одно решение для этой ошибки, если у вас есть код в src / main / java Utils

<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.9.1</version>
</dependency>
0 голосов
/ 09 декабря 2017

У меня тоже была такая же проблема, как показано ниже.

enter image description here

Чтобы решить эту проблему, в раздел dependencies в разделе добавляются следующие строки.Уровень приложения build.gradle.

compile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:0.5'

Затем Gradle build сообщает следующее предупреждение.

Warning:Conflict with dependency 'com.android.support:support-annotations'. 
Resolved versions for app (25.1.0) and test app (23.1.1) differ. 
See http://g.co/androidstudio/app-test-app-conflict for details.

Чтобы устранить это предупреждение, на уровне приложения build.gradle добавлен следующий раздел.

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-annotations:23.1.1'
    }
}
0 голосов
/ 23 октября 2015

По умолчанию maven просматривает эти папки для классов java и test соответственно - src / main / java и src / test / java

Когда src указан с тестовыми классами в источнике, а область для зависимости junit в pom.xml упоминается как test - org.unit не будет найден maven.

...