Mon*_*ika 8 unit-testing gradle gradle-task
我想测试我的 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...)
Run Code Online (Sandbox Code Playgroud)
我想测试方法和任务本身。
“prepareProject”任务的执行时间相当长,但在“真实”设置中,不仅需要设置上述任务所需的属性,而且还需要设置属性。
对于测试,我只想设置运行 readFiles 任务并验证结果,确保项目上的属性正确设置或引发异常。
我已经研究了 gradle 测试套件,但这不是我需要的,因为我无法找到任何可以让我检查项目的东西。
我已经看过Guide for Test Gradle Scripts,但是这篇文章很旧,不能解决我的需求/问题。我还查看了 gradle 文档使用 TestKit 测试构建逻辑,但是看起来 GradleRunner 似乎没有提供任何真正的检查或项目准备能力。
另外,它会让我们使用 jUnit,有效地添加整个类结构,仅用于测试目的。不干净且难以维护。谷歌搜索 gradle + test + task 和其他变体找到了大量运行 xUnit 测试的方法,但这不是我需要的。
总结一下,我需要的是:
有人成功做到这一点吗?
或者我以错误的方式处理这个问题?
我对 gradle 相当陌生,正在寻找好的选项来测试我的构建脚本。