当存在对 mockito-core 的依赖时,测试不会 运行

Tests do not run when dependency on mockito-core present

我已将 mockito-core 添加到我的依赖项中,但我似乎无法 运行 测试(运行ning 时出错),除非我也将 powermock-api-mockito 添加到依赖关系。我在添加 mockito-core 依赖项后立即开始出现错误 - 无需进行其他更改(例如,我不需要添加使用 Mockito 的代码即可开始看到错误)。

我要添加的依赖:

  <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>1.10.19</version>
    <scope>test</scope>
  </dependency>

我似乎需要包括的依赖项:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito</artifactId>
  <version>1.6.5</version>
  <scope>test</scope>
</dependency>

没有上面的第二个依赖,我得到以下错误。同样,这纯粹是依赖项更改,没有代码更改:

java.lang.NoClassDefFoundError: org/hamcrest/TypeSafeMatcher

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access0(URLClassLoader.java:73)
    at java.net.URLClassLoader.run(URLClassLoader.java:368)

还有这个:

java.lang.NoClassDefFoundError: org/junit/internal/matchers/StacktracePrintingMatcher

    at org.junit.matchers.JUnitMatchers.isThrowable(JUnitMatchers.java:103)
    at org.junit.rules.ExpectedExceptionMatcherBuilder.build(ExpectedExceptionMatcherBuilder.java:27)
    at org.junit.rules.ExpectedException.handleException(ExpectedException.java:252)
    at org.junit.rules.ExpectedException.access[=14=]0(ExpectedException.java:106)
    at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:241)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access[=14=]0(ParentRunner.java:58)
    at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

这应该通过使用 mockito-all 而不是 mockito-core 来解决。它将具有 mockito 所需的所有依赖项。 hamcrest 和 junit 是其中的一部分。

Mockito-core 1.10.19 不依赖于 powermock-api-mockito。它具有的唯一依赖项是以下运行时依赖项:

  • org.hamcrest » hamcrest-core 1.1
  • org.objenesis » objenesis 2.1

也许这些与您在依赖项树中的另一个库冲突。尝试使用以下方法分析您的依赖关系树:

mvn dependency:tree

https://mvnrepository.com/artifact/org.mockito/mockito-core/1.10.19