gpt4 book ai didi

spring-boot - Junit 5 与 Mockito java.lang.NoSuchMethodError org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryListener()

转载 作者:行者123 更新时间:2023-12-02 13:30:50 26 4
gpt4 key购买 nike

我正在尝试从 Junit 4 升级到 Junit 5,所以我们在测试中使用 Mockito,所以要替换 Run ,我们必须添加 @ExtendWith(MockitoExtension::class)我们将它添加到依赖项中
testImplementation("org.mockito:mockito-junit-jupiter:3.3.3")
我们在 gradle 中有这个 我们添加了这个

testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
exclude(group = "junit", module = "junit")
}
testImplementation("org.junit.jupiter:junit-jupiter:5.6.2")

在我们用 Mockito 运行这个测试类之后,我们得到了这个错误
org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoSuchMethodError: 'org.junit.platform.engine.EngineDiscoveryListener org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryListener()'
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:88)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:82)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113)
at org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:44)
at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:63)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)

我看到了 question (JUnit 5 and Mockito)并经过验证的答案,但对我也不起作用

更新 1

这是整个 build.gradle
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("org.springframework.boot") version "2.1.7.RELEASE"
id("io.spring.dependency-management") version "1.0.8.RELEASE"
kotlin("jvm") version "1.3.50"
kotlin("plugin.spring") version "1.3.50"
}

group = "-"
version = System.getenv("VERSION") ?: "local"
java.sourceCompatibility = JavaVersion.VERSION_12

repositories {
mavenCentral()
}

dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
.
.
.
.


testImplementation("org.junit.jupiter:junit-jupiter:5.6.2")

testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
exclude(group = "junit", module = "junit")
}
testImplementation("org.mockito:mockito-junit-jupiter:3.3.3")


}

最佳答案

您的 build.gradle 有几个问题据我所知:

  • Mockito 版本与 junit 版本不兼容 -> 请删除 mockito 依赖中的显式版本
  • 我的 IDE 也提示使用 kotlin()plugins . -> 请改成id
  • 缺少对 junit 的原生支持 -> 请启用它
  • 我的 IDE 还提示您如何排除 junit 4 依赖项

  • 在下面 build.gradle我已经解决了这些问题:
    plugins {
    id 'org.springframework.boot' version '2.1.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.50'
    }

    group = "-"
    version = System.getenv("VERSION") ?: "local"
    java.sourceCompatibility = JavaVersion.VERSION_12

    repositories {
    mavenCentral()
    }

    test {
    useJUnitPlatform()
    }

    dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")

    testImplementation("org.junit.jupiter:junit-jupiter:5.6.2")

    testImplementation("org.springframework.boot:spring-boot-starter-test") {
    exclude group : "org.junit.vintage", module : "junit-vintage-engine"
    exclude group : "junit", module : "junit"
    }
    testImplementation("org.mockito:mockito-junit-jupiter")
    }

    关于spring-boot - Junit 5 与 Mockito java.lang.NoSuchMethodError org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498720/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com