【发布时间】:2017-04-04 21:13:19
【问题描述】:
我正在尝试关注https://selimober.com/gradle_unit_integration/
使用稍微不同的文件结构:
src/test/integration/groovy
src/test/unit/groovy
src/test/resources
运行“gradle integration” - 编译运行正常,类文件出现在:
build/classes/integration
build/classes/main/
但测试本身永远不会运行。我认为我缺少依赖项中的一部分或将集成链接到运行测试,但无法弄清楚我缺少什么。除非我必须更改文件结构并在任务名称中包含测试,例如“integrationTest”
我已经尝试添加:
check.dependsOn integration
和
integrationCompile sourceSets.main.output
integrationCompile configurations.testCompile
integrationCompile sourceSets.test.output
integrationRuntime configurations.testRuntime
和
task integ(type: Test) {
testClassesDir = sourceSets.integ.output.classesDir
classpath = sourceSets.integ.runtimeClasspath
}
但这要么没有改变任何东西,要么给了我这样的错误:
Could not find method integrationCompile() for arguments [main classes] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
感谢您的帮助。
我的 build.gradle 文件:
apply plugin: 'groovy'
repositories {
maven {
url repository_url
credentials {
username = artifactory_user
password = artifactory_password
}
}
}
dependencies {
compile(
'com.oracle:ojdbc6:11.2.0.1.0',
'javax.xml.bind:jsr173_api:1.0',
'org.apache.directory:groovy-ldap:1.0',
'org.codehaus.groovy:groovy-all:2.4.5',
'weblogic:wlfullclient:10.3.6',
'javax.jms:jms:1.1'
)
testCompile(
'junit:junit:4.12',
'org.spockframework:spock-core:1.0-groovy-2.4'
)
}
sourceSets {
unit {
groovy {
srcDir file('src/test/unit/groovy')
exclude '**/integration/**'
}
resources {
srcDir file('src/test/resources')
}
compileClasspath += sourceSets.main.output + sourceSets.test.output + configurations.testRuntime
runtimeClasspath += sourceSets.main.output + sourceSets.test.output + configurations.testRuntime
}
integration {
groovy {
srcDir 'src/test/integration/groovy'
exclude '**/unit/**'
}
resources {
srcDir 'src/test/resources'
}
compileClasspath += sourceSets.main.output + sourceSets.test.output + configurations.testRuntime
runtimeClasspath += sourceSets.main.output + sourceSets.test.output + configurations.testRuntime
}
}
configurations {
unitCompile.extendsFrom testCompile
unitRuntime.extendsFrom testRuntime
integrationCompile.extendsFrom testCompile
integrationRuntime.extendsFrom testRuntime
}
task unit(type: Test) {
include '**/unit/**'
testClassesDir = sourceSets.unit.output.classesDir
classpath = sourceSets.unit.runtimeClasspath
}
task integration(type: Test) {
include '**/integration/**'
testClassesDir = sourceSets.integration.output.classesDir
classpath = sourceSets.integration.runtimeClasspath
outputs.upToDateWhen { false }
}
【问题讨论】:
-
也许可以试试 src/test/groovy/integration 或 src/integration/groovy/。可能相关:stackoverflow.com/questions/40182439/…
标签: unit-testing gradle groovy integration-testing