Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito

Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito

我是 Mockito 的新手,正在尝试学习 Here, 我已经完成的所有配置(使用 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>

我从上面提到的例子开始。但是当我 运行 测试我的 class 时,它显示以下异常:

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

我不知道这里出了什么问题。有人可以帮助我吗?

范围test表示依赖项(二进制文件)仅在maven的测试阶段使用。不过,它们并未随最终目标 jar 一起交付。所以如果你运行自己测试(而不是让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”。

打开 B 的 pom 的“对 Mockito 的依赖”正在从父级继承“测试”。显然,这种“更多的本地依赖性”会覆盖另一个。

将 Mockito 作为非测试依赖项共享时会出现问题。除非它始终且仅用于单元测试,否则它将可用。