Kotest设置问题,“未解决的参考”

我试图将kotest添加到我的库中,但是却得到:

e: /home/brett/git/ttnt/src/test/kotlin/io/bmb/ttnt/lib/SqliteManagertest.kt: (3,18): Unresolved reference: specs
e: /home/brett/git/ttnt/src/test/kotlin/io/bmb/ttnt/lib/SqliteManagertest.kt: (4,18): Unresolved reference: shouldBe
e: /home/brett/git/ttnt/src/test/kotlin/io/bmb/ttnt/lib/SqliteManagertest.kt: (6,27): Unresolved reference: StringSpec
e: /home/brett/git/ttnt/src/test/kotlin/io/bmb/ttnt/lib/SqliteManagertest.kt: (8,9): Expression '"canary test should pass"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found
e: /home/brett/git/ttnt/src/test/kotlin/io/bmb/ttnt/lib/SqliteManagertest.kt: (9,18): Unresolved reference: shouldBe

我肯定在build.gradle.kts中的某个地方搞砸了,并且没有加载东西或useJUnitPlatform()没有运行,但是我不确定在哪里。谁能发现我出问题了?

src / test / kotlin / io / bmb / ttnt / lib / SqliteManagertest.kt

package io.bmb.ttnt.lib

import io.kotest.specs.StringSpec
import io.kotest.shouldBe

class SqliteManagertest : StringSpec() {
    init {
        "canary test should pass" {
            true shouldBe true
        }
    }
}

build.gradle.kts:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath("com.github.jengelman.gradle.plugins:shadow:2.0.4")
    }
}

plugins {
    idea
    id("org.jetbrains.kotlin.jvm") version "1.3.71"
    id("org.jetbrains.kotlin.kapt") version "1.3.72"
    jacoco
    id("com.github.johnrengelman.shadow") version "5.2.0"
}



group = "io.bmb.ttnt"
version = "0.1-ALPHA"

repositories {
    google()
    mavenCentral()
    jcenter()
    maven {
        name="papermc"
        url=uri("https://papermc.io/repo/repository/maven-public/")
    }
    maven {
        url=uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots")
    }
    maven {
        url=uri("https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc")
    }
}


dependencies {
    compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

    compileonly("com.destroystokyo.paper:paper-api:1.14.4-R0.1-snAPSHOT")
    compile("io.papermc:paperlib:1.0.3")

    compile(group="org.xerial",name="sqlite-jdbc",version="3.28.0")

    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7")
    testCompile("io.kotest:kotest-runner-junit5-jvm:4.0.6") // for kotest framework
    testCompile("io.kotest:kotest-assertions-core-jvm:4.0.6") // for kotest core jvm assertions
    testCompile("io.kotest:kotest-property-jvm:4.0.6") // for kotest property test
    testImplementation("io.mockk:mockk:1.10.0")
}

tasks.withType<ShadowJar> {
    baseName = "ttnt"
    classifier = "ALPHA"
    version = "0.1"
}

tasks.test {
    finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run
}

tasks.jacocoTestReport {
    dependsOn(tasks.test) // tests are required to run before generating the report
    reports {
        xml.isEnabled = false
        csv.isEnabled = false
        html.destination = file("${buildDir}/jacocoHtml")
    }
}

jacoco {
    toolVersion = "0.8.5"
    reportsDir = file("$buildDir/customJacocoReportDir")
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetcompatibility = JavaVersion.VERSION_1_8
}

idea {
    module {
        isDownloadjavadoc = true
        isDownloadSources = true
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

val compileKotlin: KotlinCompile by tasks
val compileTestKotlin: KotlinCompile by tasks

compileKotlin.kotlinOptions.jvmTarget = "1.8"
compileTestKotlin.kotlinOptions.jvmTarget = "1.8"

defaultTasks("clean","test","jacocoTestReport")

更新:

如果我使用以下方法,尽管有不建议使用的警告,但这仍然有效:

import io.kotlintest.specs.StringSpec
import io.kotlintest.shouldBe

我在build.gradle.kts文件中使用的是io.kotest吗?

iCMS 回答:Kotest设置问题,“未解决的参考”

StringSpec现在位于io.kotest.core.spec.style包中,而不是io.kotest.specs包中。

shouldBe现在位于io.kotest.matchers包中,而不是io.kotest包中。

如果您从代码中删除了这两行,则IntelliJ可能会建议使用新的导入,但是您的代码将如下所示:

package io.bmb.ttnt.lib

import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.shouldBe

class SqliteManagerTest : StringSpec() {
    init {
        "canary test should pass" {
            true shouldBe true
        }
    }
}
本文链接:https://www.f2er.com/2220114.html

大家都在问