Groovy 中的测试类在 Kotlin 中看不到测试类

Pav*_*tam 4 groovy gradle kotlin

我有带有 Kotlin 插件的 gradle 项目。

在我的项目中,我使用 groovy 和 Spock 进行测试。用 Kotlin 编写的测试中使用的实用程序类之一,我把它放在 src/test/kotlin

我正在尝试从 groovy 测试(Spock 规范)中使用这个类,我看到“compileTestKotlin”任务首先运行并编译我的实用程序类,但“compileTestGroovy”仍然失败,因为它没有看到它。

我该如何解决这种情况?如何将 build/classes/kotlin/test/ 添加到 groovy 测试的编译类路径?

use*_*612 5

问题是默认情况下compileTestGroovy不包含build/classes/kotlin/test文件夹,因此无法从 Groovy 测试中看到您的 Kotlin util 类。

为了修复它,您可以手动将 Kotlin 测试源添加到compileTestGroovy的类路径。将以下内容添加到您的build.gradle:

compileTestGroovy.classpath += files(compileTestKotlin.destinationDir)
Run Code Online (Sandbox Code Playgroud)

如果您的构建文件是build.gradle.kts,请添加以下内容

// make groovy test code depend on kotlin test code
tasks.named<GroovyCompile>("compileTestGroovy") {
    classpath += files(tasks.compileTestKotlin)
}
Run Code Online (Sandbox Code Playgroud)