Исключение в потоке "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 как не тестовой зависимостью проблематично. Если он не используется всегда и только для модульных тестов, он будет доступен.