gradle 为测试添加多个源测试目录

xdnvmnnf  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(133)

我有一个目录结构如下的项目:

src/main/java
src/main/resources
src/test/java
src/test/resources

字符串
我想添加一个新文件夹integrationTest

src/integrationTest/java
src/integrationTest/resources


我想将集成测试与单元测试完全分开。我应该如何添加它?在build.gradle中,我不确定如何指定一个新任务,该任务将选择此文件夹构建它并单独运行测试。

kokeuurv

kokeuurv1#

Gradle有一个source sets的概念,这正是你在这里所需要的。你可以在 Java Plugin 文档中找到关于它的详细文档:https://docs.gradle.org/current/userguide/building_java_projects.html#sec:java_source_sets
您可以在build.gradle中定义一个新的源集“integrationTest”

sourceSets {
    integrationTest {
        java {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir file('src/integration-test/java')
        }
        resources.srcDir file('src/integration-test/resources')
    }
}

字符串
这将自动创建新的 * configuration * integrationTestCompileintegrationTestRuntime,您可以使用它们来定义新的 TaskintegrationTests

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


参考:完整的工作示例可以在这里找到:https://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-integration-testing/

igetnqfo

igetnqfo2#

请将新创建的源文件夹也添加到build.gradle中的源集合中,如下所示:

sourceSets {
  main {
    java {
      srcDirs = ['src']
    }
  }

  test {
    java {
      srcDirs = ['test']
    }
  }
  integrationTest {
    java {
      srcDirs = ['integrationTest']
    }
  }
}

字符串
干杯!干杯!

jrcvhitl

jrcvhitl3#

Gradle 7.3(2021年11月发布)中引入的声明式测试套件的新功能可以轻松解决这一需求,而无需所有底层的管道细节。要使用它,请将jvm-test-suite插件添加到构建脚本插件中。

testing {
  suites {
    val integrationTest by registering(JvmTestSuite::class) {
      dependencies {
        implementation(project())
      }

      targets {
        all {
          testTask.configure {
            shouldRunAfter(test)
          }
        }
      }
    }
  }
}

tasks.named("check") {
  dependsOn(testing.suites.named("integrationTest"))
}

字符串
您可以在这里找到有关此功能的更多信息:https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.html

相关问题