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

IntelliJ中同名Java与Kotlin类单元测试仅执行Java代码如何解决

解决方法

核心原因

你的项目string包下同时存在Java编写的Arrow类和Kotlin编写的同名同JVM名类,JVM类加载时优先加载了先扫描到的Java类编译产物,因此测试始终调用Java实现的逻辑。

可操作步骤

  • 移除Java版本的Arrow类源码。你只需将src/main/java/string/路径下的Arrow.java文件删除,或者在构建配置中标记该Java文件为不参与编译即可,校方要求你无需处理Java代码,删除预留的空Java实现文件属于合规操作。
  • 修正Kotlin代码的格式错误。你示例中的Kotlin代码顶部的@file:JvmName("Arrow")注解前有多余缩进,会导致注解不生效,需要删除缩进,确保注解写在文件最顶部、包声明之前:
@file:JvmName("Arrow")
package string

fun arrow(length: Int, doubleEnded: Boolean, doubleLine: Boolean): String {
    // 此处编写你的实现逻辑
    return "kotlin"
}
  • 清理旧编译产物后重新构建。执行构建工具的clean命令清理之前编译生成的class文件(Gradle项目执行./gradlew clean,Maven项目执行mvn clean,IDEA等IDE可以点击菜单的「清理项目」选项),再重新编译运行测试,此时类路径下仅存在Kotlin生成的Arrow类,测试会自动调用Kotlin实现的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:57:02