我試圖按照https://selimober.com/gradle_unit_integration/分離單元和集成測試的gradle中使用Groovy
使用略有不同的文件結構:
src/test/integration/groovy
src/test/unit/groovy
src/test/resources
運行「gradle這個一體化」 - 編譯運行正常和類文件出現在:
build/classes/integration
build/classes/main/
但測試本身從未運行。我認爲我錯過了依賴關係中的一個部分或集成到運行測試的鏈接,但無法弄清楚我錯過了什麼。除非它是我必須要改變的文件結構,並有測試在TASKNAME像
我試圖加入 「integrationTest」:
和
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 /測試/常規/集成或SRC /集成/常規/。也許相關:http://stackoverflow.com/questions/40182439/how-do-i-separate-gradle-unit-tests-from-integration-tests-in-the-same-source-se –