gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:47:41 25 4
gpt4 key购买 nike

我想要什么?

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

有什么问题?

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

How to run kotlintest tests using the Gradle Kotlin DSL while also using JUnit 5?

我尝试了什么?

How can I run kotlintest tests with gradle?本质上是问题的旧版本,但由于使用不同的技术已经过时:JUnit 4 和 Gradle 而不是 Gradle Kotlin DSL。我能找到的所有其他问题都是针对 JUnit 4 或 JUnit 5 without kotlintest .

项目设置

我正在使用 Gradle 4.6。我的测试是

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

}

而我的 build.gradle.kts

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 上完成项目.

最佳答案

对于更新版本的 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")
}

关于gradle - 如何使用 Gradle Kotlin DSL 运行 kotlintest 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49638462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com