我正在向我的 Springboot 專案添加一個黃瓜“組件測驗”。我正在使用@SpringBootTest,因此測驗與應用程式共享相同的JVM(主類除外)。
我在 build.gradle.kts 中為我的黃瓜測驗設定了一個單獨的源 -
val SourceSet.kotlin: SourceDirectorySet
get() = project.extensions.getByType<KotlinJvmProjectExtension>().sourceSets.getByName(name).kotlin
sourceSets {
create("cucumber") {
kotlin.srcDirs( "src/cucumber")
compileClasspath = sourceSets["main"].output configurations["testRuntimeClasspath"]
runtimeClasspath = output compileClasspath sourceSets["test"].runtimeClasspath
}
}
task<Test>("cucumber") {
description = "Runs the cucumber tests"
group = "verification"
testClassesDirs = sourceSets["cucumber"].output.classesDirs
classpath = sourceSets["cucumber"].runtimeClasspath
useJUnitPlatform()
}
我的專案源集現在看起來像這樣 -

我希望測驗是黑匣子。所以,我想阻止我的“黃瓜”源集訪問我的“主”源集中的任何代碼。
我正在使用 Java 9 模塊來嘗試實作這一點,這是我的“黃瓜”module-info.java -
open module at {
requires com.johncooper.reactiveKotlin;
requires ...
}
這是我的“主要” module-info.java -
module com.johncooper.reactiveKotlin {
requires spring.boot.autoconfigure;
requires ...
exports com.johncooper.reactiveKotlin;
}
運行“黃瓜”測驗時出現編譯錯誤 -
任務:compileCucumberKotlin FAILED e:在模塊圖中找不到模塊 com.johncooper.reactiveKotlin
我嘗試將 module-info.java 檔案放入 java 根檔案夾(在另一篇文章中建議)但沒有成功。
有沒有人有任何見識?
uj5u.com熱心網友回復:
解決方案是避免使用 Java 9 模塊并使用 Kotlin 自己的原生模塊功能!這是來自 Kotlin 團隊的檔案 - https://kotlinlang.org/docs/visibility-modifiers.html#modules
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459814.html
上一篇:如何定義共享構建變數?
