我有一个比较复杂的部署任务以及一个集成测试任务。目前,我的集成测试任务取决于部署任务。但是,我想为集成测试任务提供某种包装任务,以便我可以构建一个任务,以针对当前正在运行的 和要部署,运行的任务运行集成测试集成测试,然后再次取消部署。
这是当前状态:
task integrationTest(type: Test, dependsOn: "startWebappNodes") {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
outputs.upToDateWhen { false }
}
task runIntegrationTests(type: Exec, dependsOn: "integrationTest") {
commandLine 'docker-compose', 'down'
doLast {
println "Integration tests running finished"
}
}
我该如何写一个名为executeIntegrationTest
的任务,它不依赖于startWebAppNodes
来执行集成测试,然后又有一个运行startWebAppNodes
然后运行{{1 }},然后再次关闭节点?
答案 0 :(得分:1)
有一个简单的方法:使用两个主要任务来运行IntegrationTest:
integrationTest
任务),runIntegrationTests
任务)包装第一个任务,并处理部署/关闭节点。 1)删除dependsOn
任务和integrationTest
之间的startWebappNodes
依赖关系
=>您可以以“独立”方式执行此integrationTest
任务(针对当前正在运行的任何内容 )
./gradlew integrationTest
// execution of dependent task
> Task :integrationTest
// .. test executing...
2)更新您的runIntegrationTests
任务以使其同时依赖于integrationTest
和startWebappNodes
任务,并添加约束以使startWebappNodes
在{{1}之前执行},使用integrationTest
mustRunAfter
=>执行任务task runIntegrationTests(type: Exec) {
group "test"
dependsOn startWebappNodes
dependsOn integrationTest
commandLine 'docker-compose', 'down'
doLast {
println "Integration tests running finished"
}
}
integrationTest.mustRunAfter startWebappNodes
时,它将启动节点,执行集成测试,然后关闭节点
runIntegrationTests