Java 向Gradle添加额外的测试套件
我正在尝试将Gradle(1.4)添加到一个具有多个测试套件的现有项目中。位于Java 向Gradle添加额外的测试套件,java,unit-testing,junit,integration-testing,gradle,Java,Unit Testing,Junit,Integration Testing,Gradle,我正在尝试将Gradle(1.4)添加到一个具有多个测试套件的现有项目中。位于src/test/java中的标准单元测试成功运行,但我在设置任务以运行位于src/integration test/java中的JUnit测试时遇到问题 当我运行gradle intTest时,我在src/main中发现了几个类的找不到symbol错误。这使我相信依赖项设置不正确。如何设置intTest,以便它运行JUnit集成测试 build.gradle apply plugin: 'java' sourceC
src/test/java
中的标准单元测试成功运行,但我在设置任务以运行位于src/integration test/java
中的JUnit测试时遇到问题
当我运行gradle intTest
时,我在src/main
中发现了几个类的找不到symbol
错误。这使我相信依赖项设置不正确。如何设置intTest
,以便它运行JUnit集成测试
build.gradle
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
sourceSets {
integration {
java {
srcDir 'src/integration-test/java'
}
resources {
srcDir 'src/integration-test/resources'
}
}
}
dependencies {
compile(group: 'org.springframework', name: 'spring', version: '3.0.7')
testCompile(group: 'junit', name: 'junit', version: '4.+')
testCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
testCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
testCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
integrationCompile(group: 'junit', name: 'junit', version: '4.+')
integrationCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
integrationCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
integrationCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
}
task intTest(type: Test) {
testClassesDir = sourceSets.integration.output.classesDir
classpath += sourceSets.integration.runtimeClasspath
}
详细信息:渐变1.4
解决方案:我没有为集成测试源集设置编译类路径(见下文)。在我的I代码中,我将编译类路径设置为sourceset.test.runtimeClasspath
,这样我就不会有“integrationCompile”的重复依赖项
“集成”源集尚未配置其编译和运行时类路径。这就是它无法从主源集中找到类的原因。您可以通过以下方式配置编译和运行时类路径:
sourceSets {
integTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
compileClasspath = sourceSets.main.output + configurations.integTest
runtimeClasspath = output + compileClasspath
}
}
在大多数情况下,您希望使用与单元测试相同的依赖项以及一些新的依赖项。这将在集成测试的现有依赖项(如果有)之上添加单元测试的依赖项 另一种方式:
test {
exclude '**/*IntegrationTest*'
...
}
task testIntegration(type: Test) {
include '**/*IntegrationTest*'
...
}
谢谢,我只需要显式设置
compileClasspath
。在Gradle 1.6中,运行时类路径自动设置为classes+compileClasspath
,您将找不到classes
。改为使用输出
。是否链接一些文档以支持此操作?Thanks@MikeRylander关于什么的文档?如果是关于+=
操作符,你可以看到FileCollection
有一个plus
方法来支持重写+
和+=/code>操作符:我看到integrationTest源集正在扩展测试类路径,但是第二个代码块在做什么呢?@MikeRylander啊,很抱歉,这不是帖子的一部分。已修复。可能的副本
sourceSets {
integrationTest {
compileClasspath += sourceSets.test.compileClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
test {
exclude '**/*IntegrationTest*'
...
}
task testIntegration(type: Test) {
include '**/*IntegrationTest*'
...
}