"main"线程中的异常:java.lang.NoClassDefFoundError:org/mockito/Mockito。

3

我是一个新手,正在学习使用 Mockito,并尝试从这里学习。我已经按照教程中提到的所有配置做好了准备(在Win-10上)。

环境变量设置如下:

enter image description here

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个回答

7

test范围表示依赖项(二进制文件)仅在使用maven的测试阶段时使用。但它们不会随着最终目标jar一起交付。因此,如果您自己运行测试(而不是让maven运行),最好将默认运行时范围保留如下:

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

0

作为一条注释,我在以下情况下得到了这个问题。

A 依赖于 B。B 在其“正常源代码”中具有对 Mockito 的“编译”依赖。

A 依赖于 B 和 Mockito。

然后出现了相同的消息“NoClassDefFound org.mockito.Mockito”。

打开 B 的 pom 的“对 Mockito 的依赖项”从父级继承了“测试”。显然,这个“更本地的依赖关系”会覆盖其他依赖关系。

这使得共享 Mockito 作为非测试依赖项成为问题。除非它始终且仅用于单元测试,否则它将可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接