Java 为测试添加多个源测试目录
我有一个具有以下目录结构的项目:Java 为测试添加多个源测试目录,java,gradle,Java,Gradle,我有一个具有以下目录结构的项目: src/main/java src/main/resources src/test/java src/test/resources 我想添加一个新文件夹,integrationTest: src/integrationTest/java src/integrationTest/resources 我希望将集成测试与单元测试完全分开。我应该如何添加这个?在build.gradle中,我不确定如何指定一个新任务,该任务将选择此文件夹构建它并单独运行测试。grad
src/main/java
src/main/resources
src/test/java
src/test/resources
我想添加一个新文件夹,integrationTest
:
src/integrationTest/java
src/integrationTest/resources
我希望将集成测试与单元测试完全分开。我应该如何添加这个?在build.gradle中,我不确定如何指定一个新任务,该任务将选择此文件夹构建它并单独运行测试。gradle有一个
源代码集的概念,这正是您在这里需要的。您在Java插件文档中有关于此的详细文档:
您可以在build.gradle
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')
}
}
这将自动创建新配置integrationTestCompile
和integrationTestRuntime
,可用于定义新任务integrationTests
:
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
}
供参考:可在此处找到一个完整的工作示例:请将新创建的源文件夹也添加到build.gradle中的源集,如下所示:
sourceSets {
main {
java {
srcDirs = ['src']
}
}
test {
java {
srcDirs = ['test']
}
}
integrationTest {
java {
srcDirs = ['integrationTest']
}
}
}
干杯 如何创建只运行这些测试的任务?我更新了答案。您还应该阅读我提到的完整文章,其中提供了完整的步骤(配置这两种配置之间的依赖关系,它应该从“testCompile”和“testRuntim”扩展,并在“check”中包含“integrationTest”任务)生命周期任务groovy compileClasspath+=sourceSets.test.compileClasspath runtimeClasspath+=sourceSets.test.runtimeClasspath
Gradle还从测试中获取所有依赖项