测试任务的额外 属性 不保值

Extra property on test task not keeping value

我正在尝试向 gradle 构建添加一些设置和拆卸代码,该构建使用 Java 插件测试任务进行 运行JUnit 测试。我有一个额外的资源,必须在测试之前设置,然后在测试结束时拆除。

当我使用 test.doLast 功能时,资源会被正确删除,除非测试失败,在这种情况下会跳过 doLast

我已经尝试创建一个终结器任务,但是每次 运行s 资源是在 doFirst 中设置的还是被跳过了,因为所有的目标都达到了日期。当 doFirst 不是 运行.

时,我需要跳过终结器任务

我一直在尝试做的是向我在 do first 期间设置的测试任务添加一个额外的 属性,如果尚未设置,则退出终结器。我的问题是,当我到达终结器任务时,不再设置测试 属性。

将这样的变量从 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

常见错误:您在 tearDownResource 中的代码在配置期间是 运行。尝试

task tearDownResource << { 或将其放入 doFirst/doLast