问题描述
我想要什么?
我想用,我成功地通过点击测试类旁边的图标从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.
- Add the gradle plugin for junit 5 (also called the junit platform)
- Add the gradle junit plugin to the classpath of your buildscript
- 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测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!