MockK 错误:在模拟对象时启动不可翻译的 java.lang.StackOverflowError

问题描述

我用 Kotlin 和 JUnit 5 进行了这个测试:

@ExtendWith(MockKExtension::class)
class MyTest {

  @MockK
  lateinit var repo: MyRepository

  @Test
  fun test() {
    every { repo.findById("1") } returns null  
  }

}

仅使用该代码,我就会收到此错误

线程“main”中的异常# START NON-TRANSLATABLE java.lang.StackOverflowError 在 java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) 在 io.mockk.proxy.jvm.dispatcher.JvmMockKdispatcher.get(JvmMockKdispatcher.java:16) 在 java.base/java.lang.Object.hashCode(Object.java:122) 在 java.base/java.util.HashMap.hash(HashMap.java:340) 在 java.base/java.util.HashMap.get(HashMap.java:558) 在 java.base/jdk.internal.reflect.Reflection.filterMethods(Reflection.java:300) 在 java.base/java.lang.class.getmethodHelper(Class.java:1417) 在 java.base/java.lang.class.getmethod(Class.java:1343)

我不知道发生了什么。 MyRepository 是一种方法的接口:

fun findById(id: String) : MyEntity?

Kotlin 版本:1.4.21

Junit 版本:5.7.0

MockK 版本:1.10.5

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)