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

时间:2018-09-12 12:34:27

标签: gradle intellij-idea kotlin junit5 kotlin-multiplatform

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,其中has been deprecated since Gradle 4.6)。有关如何进行设置的文档已经过时且稀缺:

当我尝试为项目based on the JUnit 5 Gradle example的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的测试结果中,但是当重新运行测试时,会显示消息“未收到测试事件” 。页边空白中的“运行”图标永远不会出现在源文件中,上下文菜单中的测试选项也不会出现。

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

许多不同的发行版,过时的文档以及类似的问题使得很难找到有关此问题的更多信息。

2 个答案:

答案 0 :(得分:1)

这是IntelliJ中的错误,正如我在以下YouTrack问题中所述:IntelliJ does not recognize JUnit 5 tests in Kotlin multiplatform project

在使用JUnit 5时,目前尚无办法使其正常工作。该问题已放在 backlog 上,因此希望IntelliJ团队会尽快解决。

答案 1 :(得分:0)

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

IntelliJ IDEA JUNit plugin needs to be enabled