无法解析io。kotlin多平台模块中的kotest:kotest-runner-junit5-jvm:4.1.1

无法解析io。kotlin多平台模块中的kotest:kotest-runner-junit5-jvm:4.1.1,kotlin,gradle-kotlin-dsl,multiplatform,kotest,Kotlin,Gradle Kotlin Dsl,Multiplatform,Kotest,我有一个多模块的项目。其中一个模块是kotlin多平台。我试图使用Kotest 4.1.1为它添加单元测试。这个版本发布在repository mavenCentral中,我可以在使用java库插件的模块中很好地使用这个版本。但在多平台模块中使用Kotest 4.1.1时,每次尝试同步都失败: Could not resolve io.kotest:kotest-runner-junit5-jvm:4.1.1. 我不明白为什么会这样。这个错误肯定是特定于使用kotlin多平台插件的模块,因为同

我有一个多模块的项目。其中一个模块是kotlin多平台。我试图使用Kotest 4.1.1为它添加单元测试。这个版本发布在repository 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 stuff不在多平台模块中commonTest的测试类路径上,因此单元测试类无法导入io.kotest.xxx包

我希望在JVM中使用kotest运行单元测试,使用junit5测试多平台代码。但这是我第一次尝试使用多平台,所以一切都是可疑的:-

下面的代码段是来自多平台模块build.gradle.kts的源代码集。如果注释的部分保持原样,gradle会很好地同步,但是commonTest中的source当然看不到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 梯度6.5.1
Kotlin 1.3.72

所讨论的配置问题是,仅JVM的工件io.kotest:kotest-runner-junit5-JVM在多平台commonTest部分显示为依赖项。这将不起作用,因为公共部分不仅包括JVM目标,还包括其他JS,以及本机JS

因此,Junit5运行程序应该只进入JVM后端部分。公共部分可以包括用于所有目标的工件。请参阅Kotest的文档,在每个部分中选择最右边的多平台选项卡

以下是使用kotest 4.4.1的当前build.gradle.kts脚本的相关部分:

val kotestVersion=4.4.1 科特林{ JVM后端{ 汇编.全部{ kotlinOptions.useIR=true } 用Java } 遗产{ 浏览者{ 二进制文件.可执行文件 测试任务{ 乌塞卡玛{ 无用的 webpackConfig.cssSupport.enabled=true } } } } 源集{ 通过获取{ 依赖关系{ kotest:kotest框架引擎:$kotestVersion kotest:kotest断言核心:$kotestVersion kotest:kotest属性:$kotestVersion } } 通过获取{ 依赖关系{ 实现io.kotest:kotest-runner-junit5:$kotestVersion } } } } 任务{ //测验 withType{ 使用JUnitPlatform } }
注意:上面的示例使用JVM和JS目标的后端和前端名称。如果您坚持使用默认名称,backendTest源集将被称为jvmTest。

您是否尝试在commonTest块中使用依赖项?如果是这样,那就行不通了。您需要将依赖项添加到jvmTest配置中,并在其中编写测试。@您有一些用于此的示例设置吗?我也遇到了同样的问题。您是否尝试过使用io.kotest:kotest-runner-junit5依赖项而不是io.kotest:kotest-runner-junit5-jvm?