当前位置: 首页 > 知识库问答 >
问题:

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

蓝泰平
2023-03-14

IntelliJ IDEA 2018.2.3(Community Edition)中的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"

值得注意的是,我使用的是Gradle4.10(一些较旧的示例使用junit-platform-gradle-plugin,它从Gradle4.6起就被弃用了)。关于如何设置的文档已经过时并且稀少:

  • 如上所示,IntelliJ中构建的默认项目模板不使用JUnit 5。
  • JUnit团队提供了示例,但不是针对Kotlin Multiplatform的。

当我尝试基于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的测试结果中,但当重新运行测试时,会出现消息“test events ware not received”。边距中的“运行”图标永远不会出现在源文件中,上下文菜单中的测试选项也不会出现。

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

    null

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

共有1个答案

公孙宇
2023-03-14

这是IntelliJ中的一个bug,正如我在下一期YouTrack中所描述的:IntelliJ不识别Kotlin多平台项目中的JUnit5测试。

在最新的版本中,这一方法现在起作用了。我尝试了Kotlin 1.3.71、IntelliJ插件1.3.71-release-ij2019.3-1和JUnit 5.6.0。

 类似资料:
  • 我想在我的所有子项目中使用与gradle的平台的物料清单。http://platform.spring.io/platform/ 文档描述了如何在单个项目中激活bom。需要使用spring-boot插件。我们将使用spring-boot插件,但只在单个子项目中使用。其他项目应该只从bom中获利,但不会包含一个“Main”类来运行spring-boot。 在根文件夹中运行gradle:gradle

  • 我得到这个构建错误: kotlin多平台项目中的kotlinOptions 奇怪的是,最初的海报据称只是通过修补他的androidx进口产品来解决这个问题。也许值得注意的是,我的所有六个“不能内联字节码”都与对新的多平台Okio库的方法调用相关联。但更有可能的是我自己的设置出现了错误,而不是杰克·沃顿帮做的事情。

  • 报告工作的groovy代码是: 这将如何翻译成Kotlin DSL?我尝试了许多变体,其中一些编译和运行,但不创建所需的输出。可运行的罐子。

  • 我的KMP Jetpack Compose项目中继续出现Gradle配置错误 配置项目:共享时出现问题。 找不到名为“testApi”的配置。 我的设置是: Android Studio北极狐狸2020.3.1金丝雀3 项目级别设置 注意:通过删除一部分一部分的配置,我似乎发现问题似乎是围绕着android配置本身,所以如果我删除android()部分 只要简单的jvm()就可以了

  • 我使用的是IntelliJ IDEA多平台项目,jsTest Gradle任务不检测任何测试。jvmTest测试运行没有问题。当我使用调试输出运行jsTest任务时,我可以看到任务运行并立即完成。 Gradle版本4.10.1。科特林版本1.3.0-eap。 如何纠正Gradle配置,或者我可以运行什么命令,以便实际检测到测试,并且(如所写)失败? build.gradle: test-proje

  • 我试图将mapstruct添加到gradle spring boot项目中。这里是构建的相关部分。gradle文件: 这是我的界面: 我在两个地方收到了我的映射器接口的生成实现:首先是预期的,但我的代码没有使用:构建/生成/源/... /LogMessageMapperImpl 第二个意外但由我的代码使用:app/src/main/generated//LogMessageMapperImpl 如