我有一个包含多个模块的项目。其中一个模块是 kotlin 多平台。我正在尝试使用 Kotest 4.1.1 为其添加单元测试。此版本发布在存储库 mavenCentral() 中,我可以在使用 java 库插件的模块中很好地使用此版本。但是在多平台模块中使用 Kotest 4.1.1 时每次尝试同步都会失败:
Could not resolve io.kotest:kotest-runner-junit5-jvm:4.1.1.
我不明白为什么会这样。这个错误肯定是特定于使用 kotlin 多平台插件的模块,因为使用常规 kotlin jvm 插件的同一项目中的不同模块和相同版本的 kotest 可以很好地同步。所以 gradle 绝对能够在定义的存储库中找到发布并使用 kotest 4.1.1。
结果(不足为奇),kotest 的东西不在 multiplatform 模块中 commonTest 的测试类路径中,因此单元测试类无法导入 io.kotest.xxx 包。
我希望在 JVM 运行单元测试(使用 junit5)中使用 kotest 来测试多平台代码。但这是我第一次尝试做多平台,所以一切都是可疑的:-)
下面的代码片段是来自多平台模块的 build.gradle.kts 的 sourceSets 代码。如果注释部分保持原样,gradle 同步很好,但 commonTest 中的源当然看不到 kotest。如果注释被删除,则会发生错误
sourceSets {
commonMain {
dependencies {
implementation(kotlin("stdlib-common"))
}
}
/*
commonTest {
dependencies {
implementation(Kotest.framework)
}
}
*/
}
这是两个模块中使用的 Kotest.framework val 的值:
object Kotest {
const val version = "4.1.1"
const val framework = "io.kotest:kotest-runner-junit5-jvm:$version"
const val assertions = "io.kotest:kotest-assertions-core-jvm:$version"
const val propertyTest = "io.kotest:kotest-property-jvm:$version"
}
在 Android Studio 中使用 kotlin 多平台插件时,有没有人让 kotest 4.1.1 工作?任何关于如何进一步诊断的想法将不胜感激。提前致谢...
配置:Android Studio 4.0 Gradle 6.5.1 Kotlin 1.3.72