java - JUnit 5 和 Mockito

标签 java maven mockito junit5

使用 Java 14 和 JUnit 5,如果我将mockito-junit-jupiter 添加到我的构建中,即使在任何测试中不使用mockito,尝试运行 mvn 测试时也会引发错误。没有mockito-junit-jupiter一切都好。除 Maven 外,所有依赖项均为最新版本。

抛出的错误是

    # Created at 2020-04-15T16:34:33.816
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests
    at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:189)
...
Caused by: java.lang.NoClassDefFoundError: org/junit/jupiter/api/extension/ReflectiveInvocationContext
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.<clinit>(ClassBasedTestDescriptor.java:81)


    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-commons -->
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-commons</artifactId>
    <version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite-api -->
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-suite-api</artifactId>
    <version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher -->
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-runner -->
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.6.2</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>3.3.3</version>
</dependency>

最佳答案

混合 JUnit 5 和 Mockito 时,Maven 依赖项的顺序似乎很重要。 Mockito 依赖项必须位于 JUnit 5 的依赖项之后。也许它只是mockito-junit-jupiter 的依赖项,但我尝试将它们组合在一起。

关于java - JUnit 5 和 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61253594/

相关文章:

java - Android、OSC、接收器未接收消息。

java - Opera for Windows(NPAPI 插件)中是否禁用了 Java?

java - 使用 PayPal API 获取交易历史

Maven:更改执行测试的目录

java - 使用 Spring 的 jetty-maven-plugin 中出现莫名其妙的无法解析的 IncompleteClassChangeError

eclipse - 如何使用 DebuggerTo 单步执行 Mockito spy 对象?

Java 实例变量同步

maven - spring boot maven 如何同时构建war和jar文件

java - 忽略争论

java - Mockito 无法 stub 重载的 void 方法