我尝试添加一些设置并拆除代码到使用Java插件测试任务运行JUnit测试的gradle构建。我有一个必须在测试之前设置的外部资源,然后在测试结束时拆除。
当我使用test.doLast
功能时,除非测试失败,否则资源会被正确拆除,在这种情况下会跳过doLast
。
我已尝试创建终结器任务,但每次都会运行资源是否在doFirst
中设置,或者是否已跳过,因为所有目标都是最新的。当doFirst
未运行时,我需要跳过终结器任务。
我一直试图做的是为我在首先执行过程中设置的测试任务添加一个额外的属性,然后如果没有设置则终止终结器。我的问题是,当我进入终结器任务时,不再设置测试属性。
将这样的变量从doFirst任务传递到终结器的正确方法是什么?以下是我使用的代码的最小版本。
test.ext {
resourceStarted = false
}
task tearDownResource {
if (!test.resourceStarted) return
// tear down resource here
}
test.finalizedBy tearDownResource
test.doFirst {
resourceStarted = true
// start up resource
}
当终结器运行时,test.resourceStarted
属性始终为false
答案 0 :(得分:3)
常见错误:tearDownResource中的代码在配置期间运行。试试
task tearDownResource << {
或将其放入doFirst
/ doLast