3

我是新手,Mockito并试图从这里学习,我已经完成了教程中提到的所有配置(使用 Win-10)。

在环境变量中设置:

在此处输入图像描述

模拟版:

<!-- 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

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

4

2 回答 2

6

范围test表示依赖项(二进制文件)仅在使用 maven 的测试阶段时使用。但是,它们并未与最终目标 jar 一起交付。所以如果你自己运行测试(而不是让 maven 来做),你最好保留默认的运行时作用域,如下:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>2.0.2-beta</version>
</dependency>
于 2018-05-18T12:23:43.397 回答
0

作为说明,我在以下情况下得到了这个。

A 依赖于 B。B 对 Mockito 有“编译”依赖,并在其“正常源代码”中使用 Mockito。

A 依赖于 B 和 Mockito。

然后是相同的消息“NoClassDefFound org.mockito.Mockito”。

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

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

于 2021-10-04T19:08:58.440 回答