我正在尝试将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
虽然io.kotest是我在build.gradle.kts文件中使用的文件?
最佳答案
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
}
}
}
关于kotlin - Kotest设置问题 'unresolved reference',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62154872/