【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito线程“主”java.lang.NoClassDefFoundError 中的异常:org/mockito/Mockito
【发布时间】:2018-05-18 12:18:01
【问题描述】:

我是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>

我从同一个例子开始。但是当我运行我的类的测试时,它显示以下异常:

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

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

【问题讨论】:

    标签: java mocking mockito service-virtualization


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      A 依赖于 B 和 Mockito。

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-20
        • 2018-05-29
        • 2021-09-03
        • 2011-02-10
        • 2017-12-21
        相关资源
        最近更新 更多