本文介绍了如何使用Gradle Kotlin DSL运行kotlintest测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要什么?



我想用,我成功地通过点击测试类旁边的图标从IntelliJ运行它们。
我的项目中也有测试。
我现在开始使用,并且我设法运行执行JUnit 5任务的Gradle任务 check



有什么问题?



kotlintest测试不运行!它似乎没有被Gradle发现,因为失败的测试让Gradle任务成功。所以,

What did I try?

How can I run kotlintest tests with gradle? is essentially the old version of the question but already obsolete since using different technology: JUnit 4 and Gradle instead of the Gradle Kotlin DSL.All other question I could find are either for JUnit 4, or JUnit 5 without kotlintest.

Project setup

I am using Gradle 4.6.My test is

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)
    }

}

and my build.gradle.kts is

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 Complete project at GitHub.

解决方案

Similar to @PhPirate's answer, to use KotlinTest 3.0.x with gradle, you need to.

  1. Add the gradle plugin for junit 5 (also called the junit platform)
  2. Add the gradle junit plugin to the classpath of your buildscript
  3. Add KotlinTest junit5 runner to your test dependencies.

The first two steps are common for any project that uses junit platform - which includes junit5 itself, KotlinTest, Spek, and so on.

A basic gradle config looks like this:

apply plugin: 'org.junit.platform.gradle.plugin'

buildscript {
    ext.kotlin_version = '1.2.31'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.junit.platform:junit-platform-gradle-plugin:1.1.0"
    }
}

dependencies {
    testCompile 'io.kotlintest:kotlintest-runner-junit5:3.0.2'
}

You could also clone the gradle sample repo here which has a simple gradle project configured with KotlinTest.

这篇关于如何使用Gradle Kotlin DSL运行kotlintest测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-03 19:34