Gradle Plugin测试UpToDateWhen方法

时间:2013-07-22 17:06:57

标签: gradle

我正在编写一个gradle插件,用于定义upToDateWhen闭包,以便在满足某些条件时跳过任务。我无法弄清楚如何围绕这种方法进行测试。目前它看起来像:

class MyCoolTask extends DefaultTask {

  MyCoolTask() {
    outputs.upToDateWhen {
      if (somecondition)
        return true
      else
        return false
    }
  }
}

我的测试看起来像这样:

class MyCoolTaskTest {

  @Test
  void testUpToDateCheck() {
    project = ProjectBuilder.builder().build()
    project.apply plugin: 'myCoolPlugin'

    project.myCoolTask.execute()

    // But then how do you do a subsequent run and ensure that the task did not execute?

    project.myCoolTask.execute() // running this a second time does not work.

    project.myCoolTask.outputs.upToDateWhen() // Throws a syntax error
  }
}

任何可以提供的见解都会很棒!谢谢!

1 个答案:

答案 0 :(得分:1)

ProjectBuilder适用于配置构建但不执行任何任务的低级别测试。您可以将outputs.upToDateWhen { ... }的内容分解为方法/类并对其进行测试,和/或编写使用Gradle工具API执行实际构建的验收测试。