我试图让Gradle(2.1)和IntelliJ(14.0.2)发挥得很好 . 具体来说,我已经导入了一个示例Gradle项目,该项目包含用于集成测试的单独源集到IntelliJ中 .
使用Gradle在命令行上构建项目,我能够成功运行集成测试 . 另一方面,当在IntelliJ内部运行时,我有两个问题:
1)由于集成测试中依赖于无法解析的第三方库(commons-collections),IntelliJ内部编译失败 .
2)如果我删除上面的依赖项并编译,我无法在IntelliJ中运行集成测试 . 我收到以下错误消息:
未找到给定的测试包括:[org.gradle.PersonIntegrationTest.canConstructAPersonWithAName]
文件结构如下所示:
src
integration-test
java
resources
main
java
resources
test
java
resources
build.gradle
和build.gradle:
apply plugin: 'java'
repositories {
mavenCentral()
}
sourceSets {
integrationTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
}
}
dependencies {
testCompile 'junit:junit:4.11'
integrationTestCompile 'commons-collections:commons-collections:3.2'
integrationTestCompile sourceSets.main.output
integrationTestCompile configurations.testCompile
integrationTestCompile sourceSets.test.output
integrationTestRuntime configurations.testRuntime
}
task integrationTest(type: Test, dependsOn: jar) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
systemProperties['jar.path'] = jar.archivePath
}
check.dependsOn integrationTest
任何关于如何使这项工作的想法将非常感激 .
Gradle分发中提供了完整的Gradle示例项目,位于samples / java / withIntegrationTests下
1 回答
您需要告诉IDEA将
integrationTest
配置中的条目作为TEST依赖项映射到您的项目中 . 我不确定您是否还需要添加源根目录 . 重要的是:更多内容在http://www.gradle.org/docs/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html中描述
编辑反映丹尼尔的评论:
generatedSourceDirs
是Gradle 2.2 . 要设置测试任务,您将使用类似的任务