繁体   English   中英

如何使用 Gradle 和 IntelliJ 在 Kotlin 多平台项目中配置 JUnit 5?

[英]How to configure JUnit 5 in a Kotlin multiplatform project using Gradle and IntelliJ?

JUnit 4(工作)

IntelliJ IDEA 2018.2.3(社区版)中的 Kotlin 多平台模板依赖于build.gradle中的 JUnit 4.12 用于项目的 JVM 部分:

plugins {
    id 'kotlin-platform-jvm' version '1.2.61'
}
repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    expectedBy project(":TestMulti-common")
    testCompile "junit:junit:4.12"
    testCompile "org.jetbrains.kotlin:kotlin-test"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
sourceCompatibility = "1.8"

使用这个模板,我可以将测试添加到项目的公共部分,并且测试被 IntelliJ 识别:“运行”图标显示在源文件的边缘,并且测试可以通过上下文菜单运行。

JUnit 5(IntelliJ 中未正确识别测试)

如何使用 JUnit 5 实现类似的设置?

值得注意的是,我使用的是 Gradle 4.10(一些较旧的示例使用junit-platform-gradle-plugin自 Gradle 4.6 以来已被弃用)。 关于如何设置的文档已经过时且稀缺:

当我尝试根据 JUnit 5 Gradle 示例为项目的 JVM 部分设置build.gradle我可以使用 Gradle 运行测试,但IntelliJ 似乎无法识别我的测试

plugins {
    id 'kotlin-platform-jvm' version '1.2.61'
}
repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    expectedBy project(":TestMulti-common")

    testCompile "org.jetbrains.kotlin:kotlin-test"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit5"

    testCompile('org.junit.jupiter:junit-jupiter-api:5.3.1')
    testCompile('org.junit.jupiter:junit-jupiter-params:5.3.1')
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.1')
}

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
sourceCompatibility = "1.8"

奇怪的是,在 JVM 项目上运行gradle test时,有时测试结果会出现在 IntelliJ 的测试结果中,但是当重新运行测试时,会出现消息“未收到测试事件” 边距中的“运行”图标永远不会出现在源文件中,上下文菜单中的测试选项也不会出现。

其他人似乎也有类似的问题,但尚不清楚这些问题是否相同/相关或已解决,因为:

许多不同的版本、过时的文档和类似的问题使得很难找到有关此问题的更多信息。

这是 IntelliJ 中的一个错误,正如我在以下 YouTrack 问题中所述: IntelliJ 无法识别 Kotlin 多平台项目中的 JUnit 5 测试

在最新版本中,这现在可以工作了。 我尝试了 Kotlin 1.3.71、IntelliJ 插件 1.3.71-release-IJ2019.3-1 和 JUnit 5.6.0。

在我的情况下,IntelliJ IDEA 升级禁用了 JUnit 插件,所以我需要再次启用它(需要重新启动 IDE):

需要启用 IntelliJ IDEA JUNit 插件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM