java.lang.NoClassDefFoundError:使用mockk模拟org.w3c.dom.Node时出现io/mockk/proxy/jvm/advice/jvm/JvmMockKProxyInterceptor错误

问题描述 投票:0回答:1

我在 kotlin 中有一个使用 xml 的 gradle 项目(javax.xml.bind:jaxb-api:2.3.1)。 我想测试我的解析逻辑,因此我需要模拟我的 Node(org.w3c.dom.Node)。 然而在嘲笑时我遇到了这个错误。

io/mockk/proxy/jvm/advice/jvm/JvmMockKProxyInterceptor java.lang.NoClassDefFoundError: io/mockk/proxy/jvm/advice/jvm/JvmMockKProxyInterceptor
at java.xml/org.w3c.dom.Node$Subclass0.getNodeName(Unknown Source)

我的代码

构建.gradle.kts

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.8.0"
    application
}

group = "me.shantiswaruptunga"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
    implementation("javax.xml.bind:jaxb-api:2.3.1")
    testImplementation(kotlin("test"))
    testImplementation("io.mockk:mockk:1.12.4")
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

application {
    mainClass.set("MainKt")
}

XMLTest.kt

import io.mockk.every
import io.mockk.mockk
import org.junit.jupiter.api.Test
import org.w3c.dom.Node

class XmlTest {
    @Test
    fun test2() {
        val node1 = mockk<Node>()
        every { node1.nodeName } returns "x"
    }
}

相同的代码适用于 jdk 8 kotlin 1.4.31 我提到了这个mockk github问题但无法找出问题

java kotlin gradle xmlnode
1个回答
0
投票

您使用的是哪个版本的 gradle?检查兼容性可能很重要https://docs.gradle.org/current/userguide/compatibility.html.

否则我在使用 intellij 创建的空白项目中使用了您的示例,奇怪的是我没有这个问题。 代码示例

两种情况:

  • 问题已通过最近更新的 io.mockk:mockk 库(或更新其库依赖项)解决了

  • 您提供的代码示例无法识别问题

© www.soinside.com 2019 - 2024. All rights reserved.