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

如何使用Gradle Kotlin DSL运行kotlintest测试?

蒋乐意
2023-03-14

如何在使用JUnit5的同时使用Gradle Kotlin DSL运行kotlintest测试?

我尝试了什么?

如何使用Gradle运行kotlintest测试?本质上是这个问题的旧版本,但由于使用了不同的技术:JUnit4和Gradle而不是Gradle Kotlin DSL已经过时。我能找到的所有其他问题要么是针对JUnit4,要么是针对没有Kotlintest的JUnit5。

import io.kotlintest.matchers.exactly
import io.kotlintest.matchers.shouldBe
import io.kotlintest.specs.FunSpec

class KotlinTest: FunSpec() {

    init {
        testCalculate()
    }

    /** This failing test will not fail the Gradle check. */
    fun testCalculate() = test("one plus one is two") {
        (1+1).toDouble() shouldBe exactly(42.0)
    }

}
import org.gradle.api.plugins.ExtensionAware

import org.junit.platform.gradle.plugin.FiltersExtension
import org.junit.platform.gradle.plugin.EnginesExtension
import org.junit.platform.gradle.plugin.JUnitPlatformExtension

group = "mypackage"
version = "0.0"

// JUnit 5
buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.junit.platform:junit-platform-gradle-plugin:1.1.0")
    }
}

apply {
    plugin("org.junit.platform.gradle.plugin")
}

// Kotlin configuration.
plugins {
    application
    kotlin("jvm") version "1.2.30"
    java // Required by at least JUnit.
}

application {
    mainClassName = "mypackage.HelloWorld"
}

dependencies {
    compile(kotlin("stdlib"))
    // To "prevent strange errors".
    compile(kotlin("reflect"))
    // Kotlin reflection.
    compile(kotlin("test"))
    compile(kotlin("test-junit"))

    // JUnit 5
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.1.0")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.1.0")
    testRuntime("org.junit.platform:junit-platform-console:1.1.0")

    // Kotlintests are not run anyway when using JUnit 5 as well.
    testCompile("io.kotlintest:kotlintest:2.0.7")

}

repositories {
    jcenter()
}

PS在GitHub完成项目。

共有1个答案

越朗
2023-03-14

在Kotlin Gradle插件的最新版本中,添加这一点就足够了:

dependencies {
    testImplementation(kotlin("test-junit5"))
    testRuntimeOnly("org.junit.jupiter", "junit-jupiter-engine", "5.5.2")
}

tasks {
    test {
        useJUnitPlatform()
    }
}

这是假设您想坚持kotlin.test的接口。例如,一个小测试可以如下所示:

import kotlin.test.Test
import kotlin.test.assertEquals

class SomeTest {
    @Test
    fun testBar() {
        assertEquals(5, 6)
    }
}

如果要从IDEA运行测试,则需要添加一些附加的依赖项:

dependencies {
    // ...
    testCompileOnly("org.junit.jupiter", "junit-jupiter-api", "5.5.2")
    testCompileOnly("org.junit.jupiter", "junit-jupiter-params", "5.5.2")
}
 类似资料:
  • kotlintest测试从Intellij启动时运行得非常好,但当我尝试使用gradle test task命令运行它们时,只会找到并运行我的常规JUnit测试。 kotlintest代码: build.gradle:

  • 我正在尝试使用Gradle从Kotlintest获取分层测试报告。我看过一些截图,但是我运气不好。对于任何类型的测试(FunSpec、WordSpec、BehaviorSpec等),我总是只看到类名,然后是“叶”测试。 Gradle 5.6.2 Kotlintest 3.4.2 JUnit平台1.5.2 样本测试类 建筑格拉德尔 IntelliJ结果 格雷德尔报告 我需要做什么才能在报告中显示级别

  • 问题内容: 目前,我有以下 build.gradle 文件: 这 的build.gradle 文件是我的仓库 在这里 。我所有的主文件都在 src / model /中 ,它们各自的测试在 test / model中 。 如何正确添加JUnit 4 依赖项 ,然后在 测试/模型 文件夹中运行那些测试? 问题答案: 如何正确添加junit 4依赖关系? 假设您要针对标准Maven(或等效版本)存储库

  • 当前我有以下build.gradle文件: 此build.gradle文件用于我的存储库。我的所有主文件都在src/model/中,它们各自的测试都在test/model中。

  • 问题内容: 我在运行Ubuntu的本地计算机上设置Jenkins,将其指向我的jdk,然后进行maven,创建了一个作业来运行我的Selenium测试,并为它提供了项目中pom.xml的路径,但是当我尝试运行该作业时,它立即失败。控制台输出显示 在工作区中构建/ var / lib / jenkins / workspace / new job [new job] $ / usr / share