我正在编写一个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
}
}
任何可以提供的见解都会很棒!谢谢!
答案 0 :(得分:1)
ProjectBuilder
适用于配置构建但不执行任何任务的低级别测试。您可以将outputs.upToDateWhen { ... }
的内容分解为方法/类并对其进行测试,和/或编写使用Gradle工具API执行实际构建的验收测试。