Исключение в потоке "main" java.lang.NoClassDefFoundError: org/mockito/Mockito

Я новичок с Mockito и пытаясь опираться здесь, все настройки, которые я сделал (используя Win-10), которые упоминались в руководстве.

Установка в переменной среды:

Версия Mockito:

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>2.0.2-beta</version>
    <scope>test</scope>
</dependency>

Я начал с примера, упомянутого в том же. но пока я запускаю тест, мой класс показывает следующее исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito
  at com.mockitotest.PortfolioTester.setUp(PortfolioTester.java:23)
  at com.mockitotest.PortfolioTester.main(PortfolioTester.java:14)
Caused by: java.lang.ClassNotFoundException: org.mockito.Mockito
  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)
  ... 2 more

Я не знаю, что здесь пошло не так. Кто-нибудь может мне помочь?

2 ответа

Решение

Сфера test указывает, что зависимости (двоичные файлы) используются только на этапе тестирования maven. Они не доставлены с окончательной целевой банкой, хотя. Поэтому, если вы запускаете тесты самостоятельно (вместо того, чтобы позволить maven делать это), вам лучше оставить область выполнения по умолчанию, как показано ниже:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>2.0.2-beta</version>
</dependency>

В качестве примечания я получил это в следующей ситуации.

A зависит от B. B имеет "компилируемую" зависимость от Mockito и использует Mockito в своем "обычном исходном коде".

A зависит от B и от Mockito.

А потом то же самое сообщение «NoClassDefFound org.mockito.Mockito».

Включает "зависимость pom от Mockito" от родительского "test". Очевидно, эта «более локальная зависимость» перекрывает другую.

Из-за того, что делиться Mockito как не тестовой зависимостью проблематично. Если он не используется всегда и только для модульных тестов, он будет доступен.

Другие вопросы по тегам