【问题标题】:Creating IntegrationTest folder as module in intellij在intellij中创建IntegrationTest文件夹作为模块
【发布时间】:2021-07-01 02:12:22
【问题描述】:

我想在我的 Spring Boot 应用程序中添加集成测试。 目前我没有单元测试,但我想保持标准的项目布局:

├── Demo
│   ├── src
│   │   ├── main
|   |   |   └──java
│   │   ├── integrationTest
|   |   |   └──java
│   │   ├── test
|   |   |   └──java

我的问题是:

我应该将 integrationTest 文件夹创建为模块吗? 如果是这样 - 为什么?以及如何在 intellij 中做到这一点?

'main'和'test'已经被定义为'Demo'下的模块,'Demo'也被定义为模块。

我已经尝试过几次通过“项目结构”设置它,但它不是在“演示”下创建的,而是通过创建不同的 src 文件夹和另一个 build.gardle 文件造成的混乱

当我在 'Demo' 下成功创建它时,它在 setting.gradle 文件中添加了一个新行:include 'integrationTest'

我真的很困惑。

谁能帮助我如何创建这个子模块(如果需要)?

谢谢

【问题讨论】:

  • 确切的项目结构记录在 Gradle 用户指南 here
  • @BjørnVester 谢谢!实际上,我刚刚在另一个论坛中找到了您建议的解决方案,它非常接近我的需要,但是它将模块创建为“源”而不是“测试源”,它对我没有帮助。这似乎是known issue。我的经理不希望我花很多时间在上面,并告诉我在不同包的“test”模块下创建“integrationTest”和“unitTest”。我不喜欢它,但这似乎是可行的。

标签: java spring-boot gradle intellij-idea integration-testing


【解决方案1】:

我会在这里为遇到相同问题的人提供解决方案。

为 integrationTest 创建一个模块(将以下内容添加到 build.gradle):

sourceSets {
    integrationTest {
        java.srcDir file("src/integrationTest/java")
        resources.srcDir file("src/integrationTest/resources")
        runtimeClasspath += sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath
        compileClasspath += sourceSets.main.compileClasspath + sourceSets.test.compileClasspath
    }
}

在 intellij 中将其标记为“测试源”:

idea {
    module {
        sourceSets.integrationTest.allSource.srcDirs.each { srcDir -> module.testSourceDirs += srcDir }
    }

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多