gradle - 为什么@DisplayName 在 JUnit 5 中对我不起作用?

标签 gradle kotlin junit junit5

出于某种原因,我真的很难在使用 Kotlin 的 JUnit 5 中真正尊重显示名称。
这是我为示例目的创建的测试文件:

import org.assertj.core.api.Assertions
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test

@DisplayName("Example Test")
class ExampleTest {
    @Test
    @DisplayName("test name")
    fun myTest() {
        Assertions.assertThat(false).isTrue()
    }
}

但它没有使用这些名称,而是显示实际的类/方法名称,就好像它们没有用 @DisplayName 注释一样。根本。这是 ./gradlew test 的输出:
project.path.ExampleTest > myTest() FAILED
    org.opentest4j.AssertionFailedError at ExampleTest.kt:12

25 tests completed, 1 failed

> Task :test FAILED

我一直认为我的 Gradle 配置肯定有问题,但设置非常简单,所以我不知道我做错了什么。
这是我的 build.gradle.kts:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.3.60"
    id("org.jmailen.kotlinter") version "2.1.2"
    id("org.jetbrains.kotlin.plugin.serialization") version "1.3.60"
}

version = "0.1"

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0")
    testImplementation("org.junit.jupiter:junit-jupiter:5.5.2")
    testImplementation("org.assertj:assertj-core:3.14.0")
}

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

tasks.test {
    useJUnitPlatform()
}

在这一点上真的让我摸不着头脑,所以任何想法都将不胜感激。它也没有使用我为动态测试提供的名称(与 @TestFactory 结合使用),这尤其令人讨厌。

最佳答案

终于想通了这一点。这是一个 IntelliJ 配置问题。 (无论如何,显示名称永远不会显示在命令行中。)

结果我将它配置为使用 Gradle 测试运行程序而不是 IntelliJ 测试运行程序,它不显示自定义显示名称。解决方案是进入 IntelliJ 设置 -> 构建、执行、部署 -> Gradle 并在“使用运行测试”下选择“IntelliJ IDEA”

感谢 JBNizet 指出显示名称应该显示在 Gradle 生成的 HTML 测试报告中,但不在命令行中,这帮助我确定这是一个 IntelliJ 特定问题。

关于gradle - 为什么@DisplayName 在 JUnit 5 中对我不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012129/

相关文章:

intellij-idea - 如何使用Gradle和Jetty在 Debug模式下启用热交换?

android - x 和 y 之间的一组随机数,需要是唯一的,使用 Kotlin

Android 11(仅限)FragmentManager 崩溃 - FragmentManager 已被销毁

java - JUnit 断言、匹配器和嵌套对象

spring - 在 spring 的测试单元中注入(inject) @PersistenceContext

android - 在模块 jetified-google-pay-client-api-1.0.0-runtime.jar 中发现重复的类 com.google.android.aidl.BaseProxy

java - 如何使用 maven-publish gradle 插件附加 AAR 文件的源代码?

未找到同步样式属性时出现 Android gradle 错误

android - 管理 Activity 中的对象以避免使用 Null

java - 如何使用 junit 测试 log4j 记录了警告?