如何向 Gradle 添加新的源集?

我想将集成测试添加到我的 Gradle 内部版本(版本 1.0)中。它们应该与我的正常测试分开运行,因为它们需要将 Web 应用部署到 localhost(它们测试该 web 应用)。测试应该能够使用在我的主源代码集中定义的类。如何实现此目的?


答案 1

2021年更新:

8年来发生了很多变化。Gradle仍然是一个很棒的工具。现在,文档中有一整节专门用于配置集成测试。我建议您立即阅读文档

原始答案:

这花了我一段时间才弄清楚,在线资源不是很好。所以我想记录我的解决方案。

这是一个简单的 gradle 构建脚本,除了主源代码集和测试源代码集外,它还具有 intTest 源代码集:

apply plugin: "java"

sourceSets {
    // Note that just declaring this sourceset creates two configurations.
    intTest {
        java {
            compileClasspath += main.output
            runtimeClasspath += main.output
        }
    }
}

configurations {
    intTestCompile.extendsFrom testCompile
    intTestRuntime.extendsFrom testRuntime
}

task intTest(type:Test){
    description = "Run integration tests (located in src/intTest/...)."
    testClassesDir = project.sourceSets.intTest.output.classesDir
    classpath = project.sourceSets.intTest.runtimeClasspath
}

答案 2

以下是我如何在不使用.configurations{ }

apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_6

sourceSets {
    integrationTest {
        java {
            srcDir 'src/integrationtest/java'
        }
        resources {
            srcDir 'src/integrationtest/resources'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

task integrationTest(type: Test) {
    description = "Runs Integration Tests"
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath += sourceSets.integrationTest.runtimeClasspath
}

测试使用:Gradle 1.4 和 Gradle 1.6


推荐