gpt4 book ai didi

unit-testing - Groovy在Gradle中分离单元和集成测试

转载 作者:行者123 更新时间:2023-12-03 04:00:47 31 4
gpt4 key购买 nike

我正在尝试遵循https://selimober.com/gradle_unit_integration/

使用略有不同的文件结构:

src/test/integration/groovy
src/test/unit/groovy
src/test/resources

运行“渐变集成”-编译运行正常,类文件出现在:
build/classes/integration
build/classes/main/

但是测试本身永远不会运行。我想我缺少依赖项中的一部分,或者缺少集成到正在运行的测试的链接,但无法弄清我缺少了什么。除非它必须更改文件结构并在任务名称中添加Test(例如“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 }
}

最佳答案

问题出在您的任务中:

task unit(type: Test) {
include '**/unit/**'
}

task integration(type: Test) {
include '**/integration/**'
}

您不需要,文件夹由源集定义。包含将导致测试仅限于其软件包包含“单位”或“单位”的类。 “积分”。

删除它,您的测试应该运行。

顺便说一句,您不需要这些都不排除:
sourceSets {
unit {
groovy {
exclude '**/integration/**'
}
}
}

关于unit-testing - Groovy在Gradle中分离单元和集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217816/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com