gpt4 book ai didi

gradle - Kotlin 添加集成测试模块

转载 作者:行者123 更新时间:2023-12-04 13:59:49 25 4
gpt4 key购买 nike

我正在尝试将另一个模块添加到我的 Kotlin 项目中,专门用于集成测试 - 与标准一起生活 test由 kotlin 插件创建的模块。这是我当前添加 sourceset 的配置:

sourceSets {
testIntegration {
java.srcDir 'src/testIntegration/java'
kotlin.srcDir 'src/testIntegration/kotlin'
resources.srcDir 'src/testIntegration/resources'
compileClasspath += main.output
runtimeClasspath += main.output
}
}

configurations {
provided
testCompile.extendsFrom provided
testIntegrationCompile.extendsFrom testCompile
testIntegrationRuntime.extendsFrom testRuntime
}

task testIntegration(type: Test) {
testClassesDirs = sourceSets.testIntegration.output.classesDirs
classpath = sourceSets.testIntegration.runtimeClasspath
}

这似乎有效,但是 IntelliJ 不会选择新的源集作为测试模块。我可以手动标记它,但是每次 Gradle 运行时它都会重置。这也意味着 Intellij 填写了 Output Path而不是 Test Output Path项目结构设置中的字段。

要解决以下配置的问题:
apply plugin: 'idea'

idea {
module {
testSourceDirs += project.sourceSets.testIntegration.java.srcDirs
testSourceDirs += project.sourceSets.testIntegration.kotlin.srcDirs
testSourceDirs += project.sourceSets.testIntegration.resources.srcDirs
}
}

但是,这似乎指示 IntelliJ Test Output Path\out\test\classes这与标准的“测试”模块相同,会导致冲突问题。我希望它保持输出路径为原始 \out\testIntegration\classes否则会被使用。

有什么方法可以指示 IntelliJ 正确选择这个新的测试源集并填写正确的输出路径吗?

最佳答案

如果您想在 kotlin gradle 构建脚本中使用自定义测试源集配置idea gradle 插件,您可以这样做:

val testIntegrationSrcDirName = "testIntegration"

sourceSets {
...

create(testIntegrationSrcDirName) {
compileClasspath += sourceSets.main.get().output + sourceSets.test.get().output // take also unit test source and resources
runtimeClasspath += sourceSets.main.get().output + sourceSets.test.get().output // take also unit test source and resources
}
}

...

idea {
module {
testSourceDirs = testSourceDirs + sourceSets[testIntegrationSrcDirName].allSource.srcDirs
}
}

val testIntegrationImplementation: Configuration by configurations.getting {
extendsFrom(configurations.implementation.get())
}
configurations["${testIntegrationSrcDirName}RuntimeOnly"].extendsFrom(configurations.runtimeOnly.get())
...




关于gradle - Kotlin 添加集成测试模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51455726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com