【问题标题】:Extra property on test task not keeping value测试任务的额外属性不保持价值
【发布时间】:2015-01-26 15:58:35
【问题描述】:

我正在尝试向使用 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

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

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

    task tearDownResource << { 或放入doFirst/doLast

    【讨论】:

    • 我认为可能是这样的,但文档并不完全清楚任务和闭包之间的区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2021-06-19
    • 2020-01-18
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多