You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Kover后单元测试随机失败问题求助

问题原因与解决方案

核心原因

从堆栈信息里的Unsupported class file major version 61可以直接定位问题:

  • Major version 61对应Java 17,你使用的Kover 0.6.1依赖的ASM/ByteBuddy版本过低,不支持Java 17的class文件格式。
  • Kover和Mockk都会对类字节码做转换操作,旧版Kover的低版本ASM库会干扰Mockk的字节码处理逻辑,导致随机出现转换失败——这就是禁用一个测试后另一个仍会出错的本质原因,属于字节码层面的全局冲突。

解决办法

  1. 优先升级Kover版本
    Kover从0.7.0版本开始正式支持Java 17,把你的Kover版本升级到0.7.0及以上(推荐直接用最新稳定版),即可解决ASM版本不兼容问题。修改Gradle配置:

    classpath("org.jetbrains.kotlinx:kover:0.7.0") // 或更高稳定版本
    
  2. 确保Java版本一致性
    检查项目编译、测试运行时的Java版本是否统一,避免出现编译用Java 17生成class文件,测试运行时却用更低版本JDK的混合场景,这种情况也会触发类似的版本不兼容问题。

  3. 临时过渡方案(不推荐长期使用)
    如果暂时无法升级Kover,可以尝试调整Mockk的代理模式,在测试代码中添加:

    mockkConfiguration {
        proxyFactory = ProxyFactory.JDK // 改用JDK代理替代inline代理
    }
    

    但该方式可能会限制Mockk的部分功能,仅作为临时过渡使用。

内容的提问来源于stack exchange,提问作者Radim Janda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:35:38