Kotlin 多平台项目单元测试问题

12

今天我刚刚将我的Android Studio更新到

Android Studio 3.5.2
Build #AI-191.8026.42.35.5977832, built on October 31, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.1

因为Kotlin版本低于1.3.60,所以我更新了Android Studio。然而,我在单元测试文件上遇到了问题。之前,我可以毫无问题地运行单元测试。现在,当我点击函数名称旁边的运行按钮时,它显示“Nothing Here”。

enter image description here

下面是所有我的依赖项。

// build.gradle

buildscript {
ext.kotlin_version = '1.3.60'
repositories {
    google()
    jcenter()
    maven { url "https://kotlin.bintray.com/kotlinx" }
}

dependencies {
    // classpath 'com.android.tools.build:gradle:3.4.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
}

allprojects {
  repositories {
    google()
    jcenter()
  }
}

task clean(type: Delete) {
   delete rootProject.buildDir
}


 apply plugin: 'kotlin-multiplatform'
 apply plugin: 'kotlinx-serialization'

kotlin {
targets {
    final def iOSTarget = presets.iosX64 // Simulator

    fromPreset(iOSTarget, 'iOS') {
        binaries {
            framework('SharedCode')
        }
    }
    fromPreset(presets.jvm, 'android')
}

sourceSets {
    commonMain {
        dependencies {
            api 'org.jetbrains.kotlin:kotlin-stdlib-common'
            implementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
        }
    }

    iOSMain {
        dependsOn commonMain
    }

    androidMain.dependencies {
        api 'org.jetbrains.kotlin:kotlin-stdlib'
    }

    commonTest {
        dependsOn commonMain
    }
}
}

在这个新的Android Studio和Kotlin版本中,我是否漏掉了什么东西。我已经为此苦苦挣扎了数小时。浏览了网页,但似乎找不到任何帮助。

谢谢


你试过无效缓存并重启吗? - Evgeny Bovykin
@EvgenyBovykin 是的先生,我已经尝试过了,没有任何不同。 - alvinWB
我遇到了相同的问题...... - James Fu
1
我已经在Android Studio的问题跟踪器中提交了一个错误报告:https://issuetracker.google.com/issues/150157086 - hardysim
1
我也在JetBrains提交了一个问题:https://youtrack.jetbrains.com/issue/KT-25065 - hardysim
3个回答

2
在我的情况下,这个问题出现在我从
  • Android Studio 3.5.3 和 Kotlin 插件版本 v1.3.50-release-Studio3.5-1
升级到
  • Android Studio 3.6.3 和 Kotlin 插件版本 1.3.71-release-Studio3.6-1
时。我的所有通用 Kotlin MPP 测试都没有从预期的 IDE 端运行,并显示了“Nothing here”消息。
我尝试了一些方法,其中之一是完全卸载然后重新安装,但似乎没有任何作用。
最终为我工作的方法是(有一些警告):
  • 创建一个新测试(也适用于现有测试,只是作为示例)

pic 1

确保“没有内容”不会显示。
然后:
  • 打开所选模拟器旁边的下拉菜单,点击“编辑配置”
  • Android JUnit下,点击+按钮添加新配置
  • 应该长这样:

pic2

确保测试类型为Class,并且您拥有正确的文件路径。例如:

com.my.path.is.correct.MyNewTestCase

此外,请确保您拥有通用 Kotlin 的正确模块;在我的情况下,它是 common(而不是 commonTest)。
完成上述步骤后,您应该能够从主 Run 按钮(再次,在模拟器下拉列表旁边)运行测试类,甚至可以将其作为 Debug 运行。
函数旁边的“绿色”运行按钮仍然会显示Nothing here,但是添加断点并从主 Debug 按钮运行新配置对我来说起作用。

enter image description here

这显然不是完美的,但这是我能找到的从IDE中让它工作的唯一方法。
希望能有所帮助!

0

重新安装Android Studio解决了这个问题。从未想过会出现这个问题。之前已经多次更新了Android Studio,并且这是我第一次遇到这样的问题。


我甚至在新电脑上进行了干净的安装,但问题仍然存在(版本3.5.3也是如此)。 - Pecan
我也遇到了同样的问题,在我的常规测试中显示“无内容”,但在我的 Android 测试中却运行良好。我需要自己编写配置来在常规测试中运行代码。否则,您可以尝试通过命令行运行所有测试。 - James Fu
这个问题从3.5.x一直持续到今天的3.6稳定版。尝试了清除、重新安装、JetBrains工具箱和独立下载等方法,但都没有帮助。 - hardysim
在正常(最新)的IntelliJ中,可以看到在每个测试上运行/调试的选项,但单击它只会显示“没有可用的任务”。 - hardysim
它可以在IntelliJ 2019.3.3上的新项目(使用“Mobile Shared Library | Gradle”从“新项目”向导创建)中工作。但是在Android Studio 3.6中打开相同的项目却不行(显示“Nothing here”)。 - hardysim

0

我尝试了上面提供的所有解决方案,都没有对我起作用。最后,我只保留了与Android Studio捆绑在一起的插件,并禁用了其他所有插件(重新启动Studio)。然后,我开始在gutter菜单中看到运行测试的选项。一旦这个问题解决了,我就逐个启用那些被禁用的插件。如果确定是某个插件引起了这个问题,那么根据你的环境和开发需求来决定如何处理它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接