【问题标题】:Kotlin Multiplatform Project Unit Test IssueKotlin 多平台项目单元测试问题
【发布时间】:2019-11-26 10:06:10
【问题描述】:

今天我刚刚将我的 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

我更新了 Android Studio,因为当 kotlin 版本低于 1.3.60 时它会提示我错误。

但是我遇到了单元测试文件的问题。以前我可以毫无问题地运行单元测试。现在,当我单击函数名称(左侧)旁边的运行按钮时,它显示 Nothing 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 版本中我有什么遗漏的吗?我已经为此苦苦挣扎了好几个小时。浏览了网页,但似乎找不到任何帮助。

谢谢

【问题讨论】:

标签: android kotlin kotlin-multiplatform


【解决方案1】:

就我而言,这个问题发生在我从

更新时
  • 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 消息。

我尝试了一些方法,其中之一是完全卸载然后安装,但似乎没有任何效果。

最终对我有用的是(有一些警告):

  • 创建了一个新测试(也适用于现有测试,但仅作为示例)

确保显示Nothing Here

然后:

  • 打开所选模拟器旁边的下拉菜单,然后单击编辑配置
  • Android JUnit 下单击 + 按钮添加新配置
  • 应该是这样的:

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

com.my.path.is.correct.MyNewTestCase

另外,请确保您拥有适用于常见 Kotlin 的正确模块;在我的情况下,它是 common(不是 commonTest)。

完成上述操作后,您应该可以从 Run 主按钮(同样位于 Emulator 下拉列表旁边)运行测试类,甚至可以将其作为 Debug 运行>.

函数旁边的“绿色”运行按钮仍然会显示 Nothing here,但添加断点并从主 Debug 按钮运行新配置对我来说确实有用:

这显然不是完美的,但这是我能找到的让它在 IDE 中工作的唯一方法。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    全新安装 Android Studio 解决了这个问题。没想到会出现这个问题。过去多次更新 Android Studio,这是我第一次遇到此类问题。

    【讨论】:

    • 我什至尝试在新计算机上进行全新安装,但问题仍然存在(也在版本 3.5.3 中)。
    • 我也面临同样的问题,它在我的常见测试中显示“这里没有”,但在我的 android 测试中运行良好。我需要通过自己编写配置来运行测试,以运行普通测试中的代码。否则,您可以尝试通过命令行运行所有测试。
    • 从 3.5.x 到今天的 3.6 稳定版,这发生在我身上。尝试清除、重新安装、jetbrains 工具箱和独立下载等。没有任何帮助。
    • 使用普通(最新)IntelliJ 会显示在每个测试上运行/调试的选项,但单击它只会显示“没有可用的任务”。
    • 它适用于 IntelliJ 2019.3.3 上的新项目(来自使用“Mobile Shared Library | Gradle”的“新项目”向导)。但是在 Android Studio 3.6 中打开同一个项目并没有(“Nothing here”)。
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多