我想测试build.gradle脚本的逻辑 该剧本的摘录如下:
(...other tasks and methods...)
def readCustomerFile(File file) {
def schema = <prepare schema>
def report = schema.validate(JsonLoader.fromFile(file))
if (!report.success) {
throw new GradleException("File is not valid! " + report.toString())
}
return new groovy.json.JsonSlurper().parse(file)
}
task readFiles {
mustRunAfter 'prepareCustomerProject'
doLast {
if (System.env.CUSTOMER_FILE_OVERRIDE) {
project.ext.customerFileData = readCustomerFile(System.env.CUSTOMER_FILE_OVERRIDE)
}
else if (customerFile.exists()) {
project.ext.customerFileData = readCustomerFile(customerFile)
}
else {
throw new GradleException("Customer File is not provided! It is expected to be in CUSTOMER_FILE_OVERRIDE variable or in ${customerFile}")
}
}
}
(...other tasks and methods...)
我想测试方法和任务本身
'prepareProject'任务在执行时非常冗长,但在'真实'设置中,它不仅需要设置必要的属性,而且不仅仅是上面的任务。
对于测试我只想要例如设置运行readFiles任务并验证结果,确保项目中的任何属性都已正确设置或抛出异常。
我已经查看了gradle测试工具包,但这不是我需要的,因为我无法找到任何可以让我使用的内容。检查项目。
我见过Guide for Testing Gradle Scripts,但这篇文章已经很老了,并没有解决我的需求/问题。我也看了gradle docs Testing Build Logic with TestKit,但是看GradleRunner似乎没有提供任何真正的检查或项目准备能力。
此外,它将使我们使用jUnit,有效地添加整个类结构仅用于测试目的。不干净,难以维护。
谷歌搜索gradle +测试+任务和其他变化找到了很多运行xUnit测试的方法,但这不是我需要的。
总结一下,我需要的是:
有没有人成功完成此任务?
或者我是以错误的方式接近这个?
我很擅长gradle,寻找测试我的构建脚本的好选项。