首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin添加集成测试模块

Kotlin添加集成测试模块
EN

Stack Overflow用户
提问于 2018-07-21 19:44:59
回答 1查看 418关注 0票数 4

我正尝试在我的Kotlin项目中添加另一个专门用于集成测试的模块--与kotlin插件创建的标准test模块并存。下面是我添加sourceset的当前配置

代码语言:javascript
复制
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字段。

要修复以下配置,请执行以下操作:

代码语言:javascript
复制
apply plugin: 'idea'

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

然而,这似乎告诉IntelliJ,测试是\out\test\classes,这与标准的‘Test Output Path’模块相同,并导致冲突问题。我希望它将输出路径保留为原来的\out\testIntegration\classes,否则就会使用它。

有没有办法指示IntelliJ正确地选择这个新的测试源集并填写正确的输出路径?

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 19:00:02

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

代码语言:javascript
复制
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())
... 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51455726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档